Tervehdys.
olen jonkinverran leikkinyt näiden Uunojen kanssa. Tässä olisi pieni esimerkki ja muutamia linkkejä.
[code]// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
/* 2.6" LCD display;
digital outputs : PIN4-DB4 / PIN5-DB5 / PIN6-DB6 / PIN7-DB7 /
PIN8-RS / PIN9-E / PIN10-Backlight;
Green/yellow Backlight, adjustable backlighting
*/
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define BL 10 // taustavalo
#define Key A0 // näppäimistön luku, toteutettu
// vastusjaolla, antaa analogia-arvon
// 0…1024 | tarkat arvot saa näytöltä
// testiohjelmalla…
#define Tol 20 // varmistetaan että mitta-arvo on taulualueella
// -20…20, 231…271, 475…515, 655…695, 840…880
// eikä pienet häiriöt pääse vaikuttamaan
int keys[]={100, 0, 251, 495, 675, 860}; //vain ohjearvoja,
// tarvitaan taulukon koon määrittämiseen
// muutetaan kun oikeat arvot on mitattu
// http://auldies.euweb.cz/ard/Ama2.html
int KB; // globaali muuttuja joka sisältää Key-arvon
unsigned int TimeOut, MaxTime=1000;
#define Temp A1 // lämpötilasensorin LM35.n lukema. n.10mV/1"C
// http://www.ti.com/lit/ds/symlink/lm34.pdf
// http://www.kmitl.ac.th/~kswichit/logger3/logger3.html
// http://www.partco.biz/verkkokauppa/popup_image.php?pID=10155&image=2
// http://www.partco.biz/verkkokauppa/product_info.php?products_id=10155
#define MaxT 21 // lämpötila jossa lopetetaan lämmitys
#define MinT 18 // lämpötila jossa lämmitys kytketään
#define Ohjaus 13 // releen tms. ohjaus, voi vaatia
// driverin (transistori/fetti)
//tässähän sitten oli esittelyt, ja eiku koodaamaan
// tärkein meinas unohtua, ennen kun koodia oikeestaan alkaa
// kääntämään sketsiä on valittava ko.
// “LAUTA” Tools->Board->Arduino Uno
void setup(){
// tähän muutamia alustuksia
TimeOut = 0;
pinMode(Ohjaus, OUTPUT);
pinMode(BL, OUTPUT); //kummatkin alustettu ulostuloksi
//l. ohjaavat lediä/relettä tms.
lcd.begin(16, 2); //16 merkkiä rivillä * 2 riviä
}
boolean KeyPressed(){
boolean Painettu = false;
KB = analogRead(Key);
Painettu = (KB < 710);
return Painettu;
}
int Nappi(){
// if((keys[0] >= KB-10) && (KB+10 <= keys[0])) return 1;//olikin /RES
// siis ei paineta tai ohjelma käynnistyy uudelleen
if((keys[1] >= KB-Tol) && (KB+Tol <= keys[1])) return 2;
if((keys[2] >= KB-Tol) && (KB+Tol <= keys[2])) return 3;
if((keys[3] >= KB-Tol) && (KB+Tol <= keys[3])) return 4;
if((keys[4] >= KB-Tol) && (KB+Tol <= keys[4])) return 5;
if((keys[5] >= KB-Tol) && (KB+Tol <= keys[5])) return 6;
// palauttaa näppäin numeron 2…6 helppoa kun heinänteko
}
void TESTI(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PAINA NAPP 1…6 ");
lcd.setCursor(0, 1);
lcd.print(“Arvo=”); lcd.print(analogRead(Temp));
delay(300); // kirjoita painetun näppäimen arvo muistiin,
// ja korvaa ko. arvoilla keys[]={100, 200, 300, 400, 500, 600};
// |3| näppäinkuvio
// |1| |2| |5| |6|
// |4|
}
void Menu(){
digitalWrite(BL, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Lampotila = "); lcd.print(5.0/1.024*.02*analogRead(Temp));
lcd.setCursor(0, 0);
lcd.print("Tavoite = "); lcd.print(MaxT);
delay(1000);
}
void loop(){
TESTI(); // poista tai kommentoi tämä rivi kun arvot on ok
// ja tähän sitten mitä ikinä oletkin ajatellut, koko ohjelma pyörii vain tässä
if(KeyPressed()) Menu;
if(TimeOut <= MaxTime) TimeOut++;
else {TimeOut = 0; digitalWrite(BL, LOW);}
}[/code]
toivottavasti näistä on jotain hyötyä. En laiskuuttani viitsinyt tilata/rakentaa ko kytkentää, mutta luulisin että toimii… Joten eiku kokeileen. Hauskoja kesäiltoja homman kanssa