top of page

The Reference:

by DFRobot


We basically used the DS18B20 temperature sensor code to detect the heat and link to other modules driven, which also has the support of the visual code tools Mind+. And it is a core of our logic system.

void setup(void) { Serial.begin(9600); } void loop(void) { float temperature = getTemp();


Our OWN type:


if ( ds18b20.getTempC() >= 32 ) { //temperatureDetect-R

digitalWrite(greenLED, LOW);

digitalWrite(yellowLED, LOW);

digitalWrite(redLED, HIGH); Serial.print(" Statue - "); Serial.println("WARM"); Serial.print(" redLED - "); Serial.println("ON");

while (!(32>ds18b20.getTempC())) {} }//redLED else if ( 32 > ds18b20.getTempC() && ds18b20.getTempC()>=30) { //temperatureDetect-Y digitalWrite(greenLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, LOW); Serial.print(" Statue - "); Serial.println("Confort"); Serial.print(" yellowLED - "); Serial.println("ON");

while (!((ds18b20.getTempC()>=32) || (30>ds18b20.getTempC()))) {} }//yellowLED else { //temperatureDetect-G digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.print(" Statue - "); Serial.println("Cold"); Serial.print(" redLED - "); Serial.println("ON");

while (!(ds18b20.getTempC()>=30)) {} }//greenLED

The reference:

by DFRobot


We consider the mp3 player factory's official document and using it to drive the player in the right way. We, however, change part of the original code for better support and checking the state of player for checking the error.

Especially, we solved a significant problem of decrease the noise of the sound output, via the support of a web mate.



#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" SoftwareSerial mySoftwareSerial(10, 11); // RX, TX DFRobotDFPlayerMini myDFPlayer; void printDetail(uint8_t type, int value); void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200); Serial.println(); Serial.println(F("DFRobot DFPlayer Mini Demo")); Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1.Please recheck the connection!")); Serial.println(F("2.Please insert the SD card!")); while(true); } Serial.println(F("DFPlayer Mini online.")); myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms //----Set device we use SD as default---- // myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK); myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH); //----Mp3 control---- // myDFPlayer.sleep(); //sleep // myDFPlayer.reset(); //Reset the module // myDFPlayer.enableDAC(); //Enable On-chip DAC // myDFPlayer.disableDAC(); //Disable On-chip DAC // myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15 //----Mp3 play---- myDFPlayer.next(); //Play next mp3 delay(1000); myDFPlayer.previous(); //Play previous mp3 delay(1000); myDFPlayer.play(1); //Play the first mp3 delay(1000); myDFPlayer.loop(1); //Loop the first mp3 delay(1000); myDFPlayer.pause(); //pause the mp3 delay(1000); myDFPlayer.start(); //start the mp3 from the pause delay(1000); myDFPlayer.playFolder(15, 4); //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255) delay(1000); myDFPlayer.enableLoopAll(); //loop all mp3 files. delay(1000); myDFPlayer.disableLoopAll(); //stop loop all mp3 files. delay(1000); myDFPlayer.playMp3Folder(4); //play specific mp3 in SD:/MP3/0004.mp3; File Name(0~65535) delay(1000); myDFPlayer.advertise(3); //advertise specific mp3 in SD:/ADVERT/0003.mp3; File Name(0~65535) delay(1000); myDFPlayer.stopAdvertise(); //stop advertise delay(1000); myDFPlayer.playLargeFolder(2, 999); //play specific mp3 in SD:/02/004.mp3; Folder Name(1~10); File Name(1~1000) delay(1000); myDFPlayer.loopFolder(5); //loop all mp3 files in folder SD:/05. delay(1000); myDFPlayer.randomAll(); //Random play all the mp3. delay(1000); myDFPlayer.enableLoop(); //enable loop. delay(1000); myDFPlayer.disableLoop(); //disable loop. delay(1000);

Solving the player mini mp3 noise




Our OWN type:

if (digitalRead(Button)==LOW) { delay(10); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } } else if (digitalRead(Button)==HIGH) { delay(10); if ( ds18b20.getTempC() >= 32 ) { for (int index = 0; index < 1; index++) { //music play mp3.play(2); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } } for (int index = 0; index < 1; index++) {

mp3.pause(); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } while (!(32>ds18b20.getTempC())) {} }//redLED

For interaction between people and box, we referenced several different codes of developers to support a reliable logic and system.


First below is the "Button" control codes sample we used for as a reference to run a "Press" driven interaction.


The Reference:

From Yi Hong

int Button=3; int LED=13; boolean onoff=LOW; void setup() { pinMode(Button,INPUT); pinMode(LED,OUTPUT); } void loop(){ if(digitalRead(Button)==LOW) { delay(10); if(digitalRead(Button)==HIGH) { digitalWrite(LED,onoff); onoff=(!onoff);

delay(10); while(digitalRead(Button)==HIGH) { delay(1); } } } }




Our OWN Type below, do logical change on logic. As we have a full loop selector, so we change the part of checking the state of Button to IF & ELSE instead of IF include IF. But we do learn how to clear the noise and wrong switching on, by a 1K resistor for a more stable switch.


if (digitalRead(Button)==LOW) { delay(10); max7219.show(maxBitmap[0]); Serial.print(" Statue - "); Serial.println("ALL OFF"); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } } else if (digitalRead(Button)==HIGH) { delay(10); if ( ds18b20.getTempC() >= 32 ) { //temperatureDetect-R digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); Serial.print(" Statue - "); Serial.println("WARM"); Serial.print(" redLED - "); Serial.println("ON"); for (int index = 0; index < 1; index++) { //music play mp3.play(2); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } } for (int index = 0; index < 1; index++) { //led animation delay(500); max7219.show(maxBitmap[6]); delay(2000); max7219.show(maxBitmap[7]); delay(1000); } delay(100); digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.print(" redLED - "); Serial.println("OFF"); max7219.show(maxBitmap[0]); mp3.pause(); if (mp3.available()) { printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states. } while (!(32>ds18b20.getTempC())) {} }//redLED

bottom of page