Как складывать ?

aptem91
Offline
Зарегистрирован: 09.02.2016

С энкодера бесконечным потоком идёт 0 или 1(в зависимости от его положения) ,а мне необходимо считать количество переходов от 1 к 0.

Вот код который не хочет складывать 

В чем проблема ?

Я новичок в этом деле так что ...

int enk =5;

int x;

void setup() {

Serial.begin(9600);

}



void loop() {

if (enk == HIGH && digitalRead(enk) == LOW)

{ x == x+1; }

Serial.println(digitalRead(enk));

Serial.println(x);

delay (1000);

}

nik182
Offline
Зарегистрирован: 04.05.2015

Достаточно

 

while(digitalRead(enk)==0);

while(digitalRead(enk)==1);

 

x++;
 
x будет будет содержать количество переходов от 1 к 0.
 
Вот только зачем?  За какое то время? Но в цикле это будет 1 раз. 
Надо или цикл ограничивать по времени или использовать http://arduino.ru/Reference/AttachInterrupt
aptem91
Offline
Зарегистрирован: 09.02.2016

Спасибо за помощь 

Хочу научить робота поварачивать на 90 градусов поставив на колеса энкодеры

Подавая питание на колеса пока не наберется определенное количество сигналов с энкодера

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016
old_enc=enc;
enc=digitalRead(enc_pin);
if(old_enc && !enc) x++;

не? (для нубов: enc и old_enc имеют тип bool и находятся снаружи функции, т. о. глобальные)

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Voodoo Doll пишет:

old_enc=enc;
enc=digitalRead(enc_pin);
if(old_enc && !enc) x++;

не? (для нубов: enc и old_enc имеют тип bool и находятся снаружи функции, т. о. глобальные)

ять!

old_enc=enc;
enc=digitalRead(enc_pin);
if(old_enc && !enc) x++;
delay (1000);

 

nik182
Offline
Зарегистрирован: 04.05.2015

Тогда так
x=0;
digitalWrite(motorpin,HIGH);//Включить мотор
while(x < N)
{ // ждём енкодер N тиков
while(digitalRead(enk)==0);
while(digitalRead(enk)==1);
x++; };
digitalWrite(motorpin,LOW) //Выключить мотор

saftik
Offline
Зарегистрирован: 08.04.2015

{ x == x+1; }
надо заменить на
 
{ x = x+1; }

Logik
Offline
Зарегистрирован: 05.08.2014

А почему бы вам не начать с поиска? На форуме есть шикарная тема про енкодер с примерами, проблемами и их решениями. 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Logik пишет:

А почему бы вам не начать с поиска? На форуме есть шикарная тема про енкодер с примерами, проблемами и их решениями. 

я запретил.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

x+=1;

Logik
Offline
Зарегистрирован: 05.08.2014

???!

x++;

MacSim
Offline
Зарегистрирован: 28.11.2012

опять велосипед городите...

не проще ли  внешнее прерывание использовать? в функции прерывания увеличивать переменную.