• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Opornik podciągający
#1
Witajcie.

Napisałem sobie program do sterowania bramą (Otwieranie - STOP - ZAMYKANIE - STOP) i na teście to dobrze działało.
Podłączyłem wszystko pod bramę i teraz sama się zamyka lub otwiera (nie wiem dlaczego) i szukam przyczyny

Całość jest postawione na Kicie z ATTINY85
Attiny85
i ponieważ nie działa funkcja podciągania wejścia INPUT_PULLUP to podciągam ją opornikiem 22k do +12V
Układ zasilany z 12V przez VIN
Miał być 10k ale nie znalazłem i miałem 2k lub 22k więc wybrałem ten większy.
Ewentualnie może błąd w kodzie - dodałem linijki do Monitora portu szeregowego i testuję na UNO i nie widać błędu (stąd LED1 na 13 a w ATTINY85 na 1
Kod:
#include <Timers.h> // https://github.com/nettigo/Timers
Timer TimerOtwierania;
Timer TimerZamykania;
Timer TimerFlash;
Timer TimerOpoznienia;
Timer TimerBlink;
Timer TimerBlink1;
Timer TimerKey;
Timer TimerALL;
int ji,ki;
long z;
byte j,k,blink_stats, blink_stats1;
byte cykl; //0-przerwa, 1-otwieranie, 2-przerwa, 3-zamykanie


#define LED0 3 //0 Zamykanie
#define LED1 13 //1 BuiltIN -
#define LED2 2 //2 Otwieranie
#define LED3 0 //3 Flash
#define KEY1 4 //4 Elmes
#define ON HIGH
#define OFF LOW
#define CZAS_OTWIERANIA 22000
#define CZAS_ZAMYKANIA 23000
#define CZAS_FLASH 25000

void setup() {               
Serial.begin(38400);
Serial.println("Start programu");
  pinMode(LED0, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(KEY1, INPUT_PULLUP);
  digitalWrite(LED0, OFF);
  digitalWrite(LED1, OFF);
  digitalWrite(LED2, OFF);
  digitalWrite(LED3, OFF);
  blink_stats = OFF;
  TimerBlink1.begin(1000);

}

// the loop routine runs over and over again forever:
void loop() {
    digitalWrite(LED1, blink_stats1);
    if (j==1) ji++;
    if (digitalRead(KEY1) == 0) {
      digitalWrite(LED1, HIGH); //OFF - dla diody wbudowanej odwrotnie
      // Serial.println("FLASH - Start");
      TimerFlash.begin(CZAS_FLASH);
      TimerOpoznienia.begin(3000);
      TimerKey.begin(1000);     
      TimerALL.begin(CZAS_FLASH);
      blink_stats = ON;     
     
      }
    else {
      digitalWrite(LED1, LOW); //OFF
      }    // turn the LED off by making the voltage LOW
   
      if (ji==10) {
        cykl++;
        // Serial.print("Cykl bramy: ");
        // Serial.println(cykl);
        j=0;
        ji=0;       
        }
      if (cykl==0 || cykl==2)digitalWrite(LED0, OFF); //FLASH stop
      if (cykl==1 || cykl==3)digitalWrite(LED0, blink_stats); //FLASH start
      if (cykl==4) cykl=0;

    if (TimerOpoznienia.available())  {
      TimerOtwierania.begin(CZAS_OTWIERANIA);
      TimerZamykania.begin(CZAS_ZAMYKANIA);     
      TimerBlink.begin(1000);
      TimerOpoznienia.time(STOP);
      // Serial.println("Koniec opoznienia");
      k=1;
      }   

    if (k==1 && cykl==1) {
      z++;
      digitalWrite(LED2, ON);
      digitalWrite(LED3, OFF);
      if (z==1) Serial.println("Otwieranie bramy");
      }
    if (TimerOtwierania.available())  {
      TimerOtwierania.time(STOP); 
      if (cykl==1) Serial.println("Koniec Otwierania");
      k=0;
      z=0;
      }
    if (cykl==2 || cykl==0) {
      digitalWrite(LED2, OFF);
      digitalWrite(LED3, OFF);
      if (k==1) {
      Serial.print("PRZERWA cykl= ");
      Serial.println(cykl); 
      }
      k=0;
      z=0;
      }
    if (k==1 && cykl==3) {
      z++;
      digitalWrite(LED2, OFF);
      digitalWrite(LED3, ON);
      if (z==1) Serial.println("Zamykanie bramy");
      }

    if (TimerZamykania.available())  {
      TimerZamykania.time(STOP); 
      if (cykl==3) Serial.println("Koniec Zamykania");
      k=0;
      z=0;
      }
    if (TimerKey.available())  {
      TimerKey.time(STOP); 
      j=1;
      }     
    if (TimerFlash.available())  {
      TimerFlash.time(STOP); 
      digitalWrite(LED0, OFF); //FLASH stop
      Serial.print("Koniec FLASH. Cykl: ");
      Serial.println(cykl);
      }
    if (TimerALL.available())  {
      TimerALL.time(STOP); 
      if (cykl==1) cykl=2;
      if (cykl==3) cykl=0;
      Serial.print("Automatyczna zmiana cyklu. Cykl: ");     
      Serial.println(cykl);
      }           
    if (TimerBlink.available())  {
      TimerBlink.restart(); 
      blink_stats = !blink_stats;
      } 
    if (TimerBlink1.available())  {
      TimerBlink1.restart(); 
      blink_stats1 = !blink_stats1;
      if (z) Serial.print(".");
      }       
}
 
Odpowiedź
  


Wiadomości w tym wątku
Opornik podciągający - przez iwi - 01-04-2020, 16:26
RE: Opornik podciągający - przez Jarewa0606 - 01-04-2020, 16:35
RE: Opornik podciągający - przez fast_rabbit - 01-04-2020, 16:44
RE: Opornik podciągający - przez kaczakat - 01-04-2020, 17:01
RE: Opornik podciągający - przez iwi - 01-04-2020, 18:31
RE: Opornik podciągający - przez kaczakat - 01-04-2020, 19:00
RE: Opornik podciągający - przez iwi - 02-04-2020, 01:33
RE: Opornik podciągający - przez iwi - 02-04-2020, 01:45
RE: Opornik podciągający - przez kaczakat - 02-04-2020, 03:39
RE: Opornik podciągający - przez Agregacik - 02-04-2020, 07:48
RE: Opornik podciągający - przez iwi - 02-04-2020, 13:03
RE: Opornik podciągający - przez Agregacik - 02-04-2020, 14:47
RE: Opornik podciągający - przez kaczakat - 02-04-2020, 19:38
RE: Opornik podciągający - przez iwi - 02-04-2020, 22:58
RE: Opornik podciągający - przez kaczakat - 03-04-2020, 03:07
RE: Opornik podciągający - przez Agregacik - 03-04-2020, 07:32
RE: Opornik podciągający - przez iwi - 13-04-2020, 23:47
RE: Opornik podciągający - przez Agregacik - 14-04-2020, 10:40

Skocz do:


Przeglądający: 1 gości