Arduino Polska Forum
hmm sam nie wiem:) licznik impulsów - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: hmm sam nie wiem:) licznik impulsów (/watek-hmm-sam-nie-wiem-licznik-impuls%C3%B3w)

Strony: 1 2


RE: hmm sam nie wiem:) licznik impulsów - tooomek89@gmail.com - 07-01-2018

long cm;
long pm,pm_1;
long licznik;
byte start;
int stat,start_1;
byte czas_oczekiwania = 5;

void setup() {
Serial.begin(9600);
pinMode(5, INPUT_PULLUP);
pinMode (12, OUTPUT);
}

void loop() {

cm = millis()/1000;

if ( digitalRead(5) == HIGH )stat = 0;

if ( digitalRead(5) == LOW and stat == 0 )
{start ++;stat = 1;pm = cm;}

if ( start > 0 ){
if ((cm - pm) == 1){licznik ++;pm = cm;}}

if ( licznik > czas_oczekiwania and digitalRead(12) == 0 )
{licznik = 0;start = 0;}

if ( start >= 3 )
{digitalWrite(12,HIGH);}

if ( digitalRead(12) == HIGH ){
licznik = 0;start = 0;
if ((cm - pm_1) > 0){start_1 ++;pm_1 = cm;}
if ( start_1 > 10 ){digitalWrite(12,LOW);start_1 = 0;}}


Serial.print(2000);
Serial.print(" / ");
Serial.print(start);
Serial.print(" / ");
Serial.println(start_1);
}



kod w takiej postaci działa jak trzeba Smile teraz próbuje zdublować kod dodając dodatkowy pin na wejsciu i wyjściu aby w ten sam sposób sterować nastepnym przekaźnikiem i ciagle jakies blędy :p


RE: hmm sam nie wiem:) licznik impulsów - tooomek89@gmail.com - 09-01-2018

Coś powoli sie udaje Smile

long cm;
long pm,pm_1;
long licznik;
byte start;
int stat,start_1;
int stat2,start_2;
byte czas_oczekiwania = 5;

void setup() {
Serial.begin(9600);
pinMode(5, INPUT_PULLUP);
pinMode (12, OUTPUT);
pinMode(4, INPUT_PULLUP);
pinMode (11, OUTPUT);
}

void loop() {

cm = millis()/1000;

if ( digitalRead(5) == HIGH )stat = 0;
if ( digitalRead(4) == HIGH )stat2 = 0;
if ( digitalRead(5) == LOW and stat == 0 )
{start ++;stat = 1;pm = cm;}
if ( digitalRead(4) == LOW and stat2 == 0 )
{start_2 ++;stat2 = 1;pm = cm;}
if ( start > 0 ){
if ((cm - pm) == 1){licznik ++;pm = cm;}}
if ( start_2 > 0 ){
if ((cm - pm) == 1){licznik ++;pm = cm;}}

if ( licznik > czas_oczekiwania and digitalRead(12) == 0 )
{licznik = 0;start = 0;}
if ( licznik > czas_oczekiwania and digitalRead(11) == 0 )
{licznik = 0;start_2 = 0;}
if ( start >= 3 )
{digitalWrite(12,HIGH);}
if ( start_2 >= 3 )
{digitalWrite(11,HIGH);}

if ( digitalRead(12) == HIGH ){
licznik = 0;start = 0;

if ((cm - pm_1) > 0){start_1 ++;pm_1 = cm;}
if ( start_1 > 10 ){digitalWrite(12,LOW);start_1 = 0;}}

if ( digitalRead(11) == HIGH ){{
licznik = 0;start_2 = 0;
if ((cm - pm_1) > 0){start_2 ++;pm_1 = cm;}
if ( start_2 > 10 ){digitalWrite(11,LOW);start_2 = 0;}}}


Serial.print(2000);
Serial.print(" / ");
Serial.print(start);
Serial.print(" / ");
Serial.println(start_1);
}
pin 12 działa jak trzeba, Pin 11 czyli dodany przeze mnie:
świeci przez ok 6 sekund,
jeżeli świeci się dioda z pinu 12 to mogę również włączyć pin 11 ( odwrotnie juz tak nie jest),
jeśli swieci zielona i wcisnę kolejne 3 razy przycisk za nią odpowiedzialny to gaśnie.
W serial monitor nic sie nie zmienia jeśli steruję pinem 11