ovládací pin
Úvodní stránka › Fórum › Hardware › Arduino › ovládací pin
- Toto téma obsahuje celkem 4 odpovědi. Do diskuze (3 diskutující) se naposledy zapojil uživatel
Jumbo a poslední změna proběhla před 9 roky a 3 měsíci.
-
AutorPříspěvky
-
24.7.2016 v 20:10 #7776
Jumbo
ÚčastníkAhoj,
hraju si s arduinem nano v3, a potřebuji na ovládacím pinu po připojení napětí 5V pracovat s progamem. Vše funguje, jen je problém, že když přiletuji nějaký vodič na pin ze kterého probíhá čtení, tak to vyhodnotí jako HIGH a pokračuje v programu. Taktéž stačí když se kontaktu jen dotknu. Zkoušel jsem i Analogový pin s tím, že nad 220 z maximálních 250 hodnot se to opakovalo. Potřebuji, aby při připojení vodiče se nic nedělo. máte někdo nějaký nápad co s tím? (je to zařízení na spínání a vypínání UPS (nechci aby dobíjela baterii protože na to mám solár a tak chci v případě obnovení napájení ze sítě byla ups vypnuta a pomocí relé se zátěž zpět připojí na síť.
mám tento kód:int vstup1 = 0;
int vystup1 = 0;
int vystup2 = 0;
int stavmenice = 0;void setup() {
// initialize digital pins as an input/output.
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT); //KONTROLNÍ PIN PRO ZJIŠTĚNÍ, KDE SE PROGRAM NACHÁZÍdigitalWrite(3, HIGH); //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
digitalWrite(4, HIGH); //HIGH = RELÉ VYPNUTO
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);}
// the loop function runs over and over again forever
void loop() {
vstup1 = digitalRead(2);//vystup1 = digitalWrite(2);
//vystup2 = digitalWrite(3);if (vstup1 == HIGH) {
while (stavmenice == 0)
{delay(5000);
digitalWrite(3, LOW); //na 2 vteřiny se sepne tlačítko napájení na měniči a tím ho zapne. //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
delay(2000);
digitalWrite(3, HIGH); //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
stavmenice = 1;
delay(2000);
digitalWrite(4, LOW); //zapnutí Nuláku relé pro provoz na UPS //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
digitalWrite(5, LOW); //zapnutí Fáze relé pro provoz na UPSdelay(3000);}}
else {
while (stavmenice == 1){
digitalWrite(4, HIGH); //odpoj zátěž od UPS a přepni na síť //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
digitalWrite(5, HIGH); //odpoj zátěž od UPS a přepni na síť
delay(1000);
digitalWrite(3, LOW); //Na 2 sekundy „stiskni tlačítko napájení na měniči“ a tím ho vypneme POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
delay(2000);
digitalWrite(3, HIGH); //POZOR! RELÁTKA SE SPÍNAJÍ HODNOTOU LOW, A ROZEPÍNAJÍ HIGH
stavmenice = 0;
delay(2000);
}}
//kontrolní 4 řádky
// delay(3000);
//digitalWrite(6, LOW);
//delay(1000);
//digitalWrite(6, HIGH);}
25.7.2016 v 16:08 #7777Aleš
ÚčastníkMusíš ten vstupní pin uzemnit přes odpor 4k7-10k. To ti zaručí, že na něm bude LOW. Příchozí data teprve vyvolají HIGH úroveň.
25.7.2016 v 19:22 #777825.7.2016 v 19:27 #7779BlindP
Účastník„Pokud odpojíte digitální I/O pin od všech komponentů a čtete na něm digitální hodnotu, může se stát, že bude výstup vracet náhodně LOW nebo HIGH. Může za to citlivost tohoto vstupu, který při měření detekuje i magnetický šum v jeho okolí. Této vlastnosti se občas využívá při generování náhodných hodnot, ale v našem případě je nežádoucí. Kvůli tomu zde máme pull-down rezistor, který zajistí „uzemnění“ digitálního vstupu.“
https://bastlirna.hwkitchen.cz/arduino-zaklady-4-digital-read-serial/
26.7.2016 v 13:32 #7780Jumbo
ÚčastníkOk už jsem to vyřešil odporem s led diodou (aspoň vidím, kdy vypadne šťáva.
Díky za rady 🙂
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.
