Hodnoty se pohybují od 0 do 255 protože při načítání hodnoty dělíš čtyřmi. Funkce
analogRead vrací číslo od 0 do 1023 Na funkci to nemá žádnej vliv, ale zbytečně si tím zmenšuješ rozlišení analogového vstupu.
Pozor na to, jak definuješ podmínku. Takhle jak to máš napsaný se provede část když je hodnota pod 200 a druhá část nad 200. Ale když bude mít proměnná hodnotu 200, tak se nic neprovede!
Pokud chceš jenom podle hodnoty rozsvěcet první, nebo druhou LEDku, tak můžeš jednoduše použít tento kód. Důležité je, že kromě rozsvěcení diody musíš tu druhou taky zhasínat. Arduino dělá jenom to, co mu napíšeš. A pokud nedáš příkaz k zhasnutí, tak to jednoduše neudělá.
Kód: Vybrat vše
int cteni;
int led = 6;
int pot = A0;
int war = 5; //warning, cervena led dioda
void setup() {
Serial.begin (9600);
pinMode(led, OUTPUT);
pinMode(war, OUTPUT);
pinMode(pot, INPUT);
}
void loop() {
int cteni = analogRead(pot)/4;
Serial.println(cteni, DEC);
if (cteni < 200){
//hodnoty menší než 200 (tedy 0 - 199)
digitalWrite(led, HIGH);
digitalWrite(war, LOW);
}
else{
//hodnoty větší a rovno 200 (tedy 200 - ...)
digitalWrite(led, LOW);
digitalWrite(war, HIGH);
}
}
Pokud chceš s LEDkou blikat (nevím jak, z popisu jsem to moc nepobral), tak opět jenom upravíš podmínky. Konstrukce IF zůstane stejná, jenom se změní její obsah. Pozor, konstrukce, kde se používá delay bude mít vždy zpoždění - pokud budeš měnit hodnoty rychle, nebudou LEDky rychle problikávat, ale vždy dobliká jedna a pak začne druhá.
Kód: Vybrat vše
if (cteni < 200){
digitalWrite(war, LOW); //zhasni ledku war
digitalWrite(led, HIGH); //rozsviť LED
delay(200); //čekání
digitalWrite(led, LOW); //zhasni LED
delay(200);
}
else{
digitalWrite(led, LOW); //zhasni led
digitalWrite(war, HIGH); //rozsviť LED war
delay(200); //čekání
digitalWrite(war, LOW); //zhasni LED war
delay(200);
}