loop - dotaz začátečníka

Odpovědět
shizzu
Příspěvky: 2
Registrován: 12 říj 2020, 22:45
Reputation: 0

loop - dotaz začátečníka

Příspěvek od shizzu » 12 říj 2020, 23:01

Ahoj, jsem úplný začátečník, ale měl bych dotaz na který jsem nikde nenašel odpověď.

Do arduina jsem zapojil potenciometr a 3 ledky s tím, že jsem chtěl, aby se ledky jednotlivě rozsvěcovaly a zhasínaly podle toho, jak točím potenciometrem, ale z nějakého důvodu mi ledky nezhasínají (zůstanou svítit i když mám hodnotu potenciometru 0). Myslel jsem, že ten loop jede pořád dokola, ale očividně ne. Když dám na konec delay, tak ledky začnou blikat a všechno funguje jak má, ale zatím jsem nepřišel na to, jak to udělat s rozsvícenýma ledkama. Můžete mi to někdo prosím vysvětlit? Díky.

int LEDblue = 2;
int LEDyellow = 3;
int LEDred = 4;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LEDred, OUTPUT);
pinMode(LEDyellow, OUTPUT);
pinMode(LEDblue, OUTPUT);
}

void loop() {

int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(100);

if (sensorValue < 330){
digitalWrite(LEDblue, HIGH);
}
else if (sensorValue > 660){
digitalWrite(LEDblue, HIGH);
digitalWrite(LEDyellow, HIGH);
digitalWrite(LEDred, HIGH);
}
else {
digitalWrite(LEDblue, HIGH);
digitalWrite(LEDyellow, HIGH);

}


}

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: loop - dotaz začátečníka

Příspěvek od gilhad » 13 říj 2020, 01:01

No, hlavne ty LEDky sice rozsvecis, ale uz nikde nezhasinas.

Jakmile LEDku jednou nastavis na HIGH, tak bude svitit do doby, nez ji nastavis na LOW, coz nikde nedelas.

(Ano, zustane svitit i pri dalsim pruchodu tou loop() i kdyz ji v tom pruchodu nenastavujes.)

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: loop - dotaz začátečníka

Příspěvek od Hanz » 13 říj 2020, 07:46

pokud jsi myslel, aby to chodilo takto
odkaz na video : https://www.youtube.com/watch?v=AoeeWS_4gM0
kod může vypadat i takhle

Kód: Vybrat vše

int LEDblue = 2;    // pin pro modrou led
int LEDyellow = 3;    // pin pro žlutou led   
int LEDred = 4;    // pin pro červenou led
void setup() {

Serial.begin(9600);    // připojení seriového monitoru

pinMode(LEDred, OUTPUT);    
pinMode(LEDyellow, OUTPUT);
pinMode(LEDblue, OUTPUT);
}

void loop() {

int sensorValue = analogRead(A0);    // střední pin potenciometru, krajní na +5V - na GND
Serial.println(sensorValue);    // vytisknutí hodnoty na seriovém monitoru
delay(1);    // prodleva zobrazování na ser.monitoru

if (sensorValue > 330){    // když je přečtená hodnota z pinu A0 potenciometru větší než 330 tak
  digitalWrite(LEDblue, HIGH);    // rožni modrou led
  digitalWrite(LEDyellow, LOW);    // nechej zhasnutou žlutou led
  digitalWrite(LEDred, LOW);    // nechej zhasnutou červenou led
}
if (sensorValue > 660){    // když je přečtená hodnota z pinu A0potenciometru větší než 660 tak
  digitalWrite(LEDblue, HIGH);    // nechej rožnutou modrou led
  digitalWrite(LEDyellow, HIGH);    // rožni žlutou led
  digitalWrite(LEDred, LOW);    // nechej zhasnutou červenou led 
}
if (sensorValue > 990){    // když je přečtená hodnota z pinu A0 potenciometru větší než 990 tak
  digitalWrite(LEDblue, HIGH);    // nechej rožnutou modrou led    
  digitalWrite(LEDyellow, HIGH);    // nechej rožnutou žlutou led
  digitalWrite(LEDred, HIGH);    // rožni červenou led
}

if (sensorValue == 0) {    // když je přečtená hodnota z pinu A0 potenciometru rovná 0 tak
  digitalWrite (LEDblue, LOW);    // zhasni všechny ledky
  digitalWrite (LEDyellow, LOW);
  digitalWrite (LEDred, LOW); 
}

}
pokud si otevřeš seriový monitor uvidíš na něm hodnoty na pinu A0, tady taky zjištíš jestli se opravdu rozsvěcí a zhasínají ledky podle nastavených hodnot v podmínkách ;) , doporučuju - vyzkoušej si je změnit , a uvidíš co se při změnách stane
jo, a místo žluté led mám zelenou :lol:

shizzu
Příspěvky: 2
Registrován: 12 říj 2020, 22:45
Reputation: 0

Re: loop - dotaz začátečníka

Příspěvek od shizzu » 14 říj 2020, 00:31

ok, kouknu na to. Děkuji za pomoc :)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů