Projektas #3: Spalv? termometras
Išmokite sukurti ir užprogramuoti spalv? termometr?, panaudodami „Maker Control Kit“ komplektuojam? robotikos rinkini? valdymo plokšt?s ir „Maker Kit 2“ komplektuojamo robotikos rinkinio komponentus.
Nor?dami j? paruošti, naudokite temperat?ros jutikl? ir RGB LED. LED kei?ia spalv?, priklausomai nuo aplinkos temperat?ros, kuri? spalva parodo termometras.
SUD?TINGUMO LYGIS: Pradedantiesiems.
PRATIMO TRUKM?: 45 min.
MEDŽIAGOS:
- 1x RGB LED
- 1x temperat?ros jutiklis
- 1x „4in1 Build & Code“ plokšt?
- 1x USB – Mikro USB kabelis
- Kompiuteris
- Termometro trafaretas
- Klijai
Kas yra temperat?ros jutiklis?
Temperat?ros jutiklis yra elektroninis komponentas, kuris pateikia ?tampos vert?, proporcing? j? veikian?iai temperat?rai.
Tokiu atveju jutiklis siun?ia analogin? signal?, kurio temperat?ros intervalas nuo -40 °C iki + 125 ºC, paklaida +/- 2 ºC.
JUNGTYS:
- Prijunkite temperat?ros jutikl? prie „4in1 Build & Code“ plokšt?s analogin?s jungties A0.
- Prijunkite RGB LED prie „4in1 Build&Code“ plokšt?s skaitmenin?s jungties Nr. 6.
Perži?r?kite kabeli? spalvas ir „4in1 Build & Code“ plokšt?s kontakt? spalvas, kad žinotum?te kaip sujungti. Kiekvienas kabelis tur?t? b?ti prijungtas prie jo spalvos:
KONSTRUKCIJOS SUK?RIMAS:
Parsisi?skite termometro trafaret? ir priklijuokite turimus elektroninius komponentus. Naudokite ši? iliustracij? kaip pavyzd?:
PROGRAMOS KODAS:
Programa išmatuoja temperat?ros jutiklio užfiksuot? temperat?r? ir ?jungia t? vert?, kuri atitinka spalv?.
Mes pasirinkome temperat?ros interval? nuo 0ºC iki 41ºC ir 11 skirting? spalv?. Nor?dami susieti kiekvien? spalv? su temperat?ros intervalu, kuriam ji skirta, atlikite toliau pateikt? skai?iavim?:
41ºC (Maksimali temperat?ra) / 11 (spalv? skai?ius) = 3.72ºClaipsnio tarp kiekvienos spalvos
Šiuos veiksmus galite atlikti naudodami „Arduino“ ir „Bitbloq“ programin? ?rang?, taip pat kit? suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Žemiau pateikiamas programin?s ?rangos kodas, reikalingas kiekvienai programinei ?rangai.
„Arduino“ kodas
- Parsisi?skite „Arduino“ programin? ?rang? ir atlikite ?diegimo proces?.
- 2. Prid?kite RGB LED skirt? bibliotek? ? „Arduino“ programin? ?rang?, pagal vadovo “Kaip prid?ti bibliotek? norint užprogramuoti RGB LED” instrukcijas.
- Paleiskite program? ir nukopijuokite toliau pateikt? kod?:
/* R G B TEMP ºC 255 0 0 41 244 80 43 37.27 244 102 26 33.54 248 147 31 29.81 243 223 6 26.09 147 198 45 22.36 23 173 66 18.63 40 209 188 14.90 48 59 175 11.18 58 33 117 7.45 105 46 152 3.72 155 36 152 0 Scale (41ºC max / 11 colors = 3.72) */ int PortTemp = A0; // Temperature sensor -> digital port A0 float VoltTemp, Temp, ValueTemp; // Temperature sensor voltage, Temperature in ºC, temperature sensor value #include <Adafruit_NeoPixel.h> //LIBRARY RGB LED #define PIXEL_PIN 6 //PIN OF THE RGB LED #define PIXEL_COUNT 1 // NUMBER OF RGB LEDS Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // CONFIGURATION OF THE RGB LED void setup() { // put your setup code here, to run once: Serial.begin(9600); //CONFIGURATION OF THE RGB LED strip.begin(); strip.show(); } void loop() { // Put your main code here, to run repeatedly: Temperature(); // Call the function to calculate the temperature in ºC Serial.println (Temp); // Show the temperature value in ºC if (Temp>41)colorWipe(strip.Color(255,0,0),0); // Temperature greater than 41ºC if ((Temp>37)&&(Temp<41))colorWipe(strip.Color(244,80,43),0); // Temperature between 41ºC and 37ºC if ((Temp>34)&&(Temp<37))colorWipe(strip.Color(244,102,26),0); // Temperature between 37ºC and 34ºC if ((Temp>30)&&(Temp<34))colorWipe(strip.Color(248,147,31),0); // Temperature between 34ºC and 30ºC if ((Temp>27)&&(Temp<30))colorWipe(strip.Color(243,223,6),0); // Temperature between 30ºC and 27ºC if ((Temp>23)&&(Temp<27))colorWipe(strip.Color(147,198,45),0); // Temperature between 27ºC and 23ºC if ((Temp>20)&&(Temp<23))colorWipe(strip.Color(23,173,66),0); // Temperature between 23ºC and 20ºC if ((Temp>17)&&(Temp<20))colorWipe(strip.Color(40,209,188),0); // Temperature between 20ºC and 17ºC if ((Temp>13)&&(Temp<17))colorWipe(strip.Color(48,59,175),0); // Temperature between 17ºC and 13ºC if ((Temp>10)&&(Temp<13))colorWipe(strip.Color(58,33,117),0); // Temperature between 13ºC and 10ºC if ((Temp>6)&&(Temp<10))colorWipe(strip.Color(105,46,152),0); // Temperature between 10ºC and 6ºC if ((Temp>0)&&(Temp<6))colorWipe(strip.Color(155,36,152),0); // Temperature between 6ºC and 0ºC } // FUNCTION FOR THE COLOR OF THE RGB LED void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } void Temperature() // Calculate Temperature in ºC { ValueTemp = analogRead (PortTemp); // ValueTemp = Save the analog value of the temperature sensor VoltTemp = 5.0/1024*ValueTemp; // Temp = VoltTemp * 100-50; // Temp is the value of the temperature in ºC delay(1000); }
- Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.
Kodas skirtas suderinamai vaizdinei programavimo programinei ?rangai, naudojan?iai blokus
- Parsisi?skite programin? ?rang? ir atlikite ?diegimo proces?.
- Nor?dami užprogramuoti RGB LED prid?kite pl?tin?, pagal vadovo “Kaip prid?ti bibliotek? norint užprogramuoti RGB LED” instrukcijas.
- Paleiskite program? ir paleid? nukopijuokite ? j? toliau pateikt? kod?:
- Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.
„BitBloq“ kodas
- Parsisi?skite „BitBloq“ programin? ?rang?.
- Paleiskite „BitBloq“ program? ir paleid? nukopijuokite ? j? toliau pateikt? kod?:
- Aparatin? ?ranga
- Programin? ?ranga
- Aparatin? ?ranga
- Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.
PRATIMO REZULTATAS:
Atlikus š? pratim?, termometras rodys aplinkos temperat?r? parodydamas spalvos kod?. J?s užprogramavote savo spalv? termometr?!