Я делаю этот проект, который включает в себя датчики. У меня два датчика, один слева и справа. Мне удалось обнаружить левое и правое движения, но когда я просто спам «ощущаю» датчик, скажем, левый датчик, он читается, когда я вылетел влево. Не могли бы вы рассказать мне, в чем проблема?Левый правый ИК-датчик движения на Arduino
Чтобы понять мой код, я нарисовал «требуемую» последовательность, чтобы сказать, что я проверил. (0 обнаружено, не обнаружено 1 ничего)
Для левого 1. L = 1, R = 1 2. L = 0, R = 1 3. L = 0, R = 0 4. L = 1 R = 0
Для правильного 1. L = 1, R = 1 2. L = 1, R = 0 3. L = 0, R = 0 4. L = 0, R = 1
Вот мой код
int rs=7,ls=6,r,l,x,xx,xxx,z; //rs right sensor, ls left sensor
void setup() {
Serial.begin(9600);
pinMode(rs, INPUT);
pinMode(ls, INPUT);
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(12,LOW);
digitalWrite(13,LOW);
r= digitalRead(rs);
l= digitalRead(ls);
if(r==1&&l==1)
x=1;
else x=0;
//RIGHT MOTION
if(x==1){
for(z=1;z<10000;z++){
if(digitalRead(ls)<digitalRead(rs)){
z=10000;xx=1;}}
if(xx=1){
for(z=1;z<10000;z++){
if(digitalRead(ls)==0&&digitalRead(rs)==0){
z=10000;xxx=1;}}}
if(xxx==1){
for(z=1;z<10000;z++){
if(digitalRead(ls)>digitalRead(rs)){
z=10000;Serial.println("Right motion");digitalWrite(12,HIGH);}}}}
//LEFT MOTION
if(x==1){
for(z=1;z<10000;z++){
if(digitalRead(ls)>digitalRead(rs)){
z=10000;xx=1;}}
if(xx=1){
for(z=1;z<10000;z++){
if(digitalRead(ls)==0&&digitalRead(rs)==0){
z=10000;xxx=1;}}}
if(xxx==1){
for(z=1;z<10000;z++){
if(digitalRead(ls)<digitalRead(rs)){
z=10000;Serial.println("Left motion");digitalWrite(13,HIGH);}}}}
}
I s et my loop 10000 раз, потому что 1 целая петля настолько быстро обнаруживает движение.
Заранее спасибо.
О, да, я пропустил это! x, xx, xxx - это этапы, и да, я забыл их сбросить. Хорошо, спасибо! Я посмотрю, сработает ли это сейчас. –
ладно сэр, я уничтожил ту ошибку, о которой я сказал. теперь, похоже, не удается обнаружить какое-либо движение в течение некоторого времени. но все показания направления верны. вы знаете, почему это происходит –
заранее! :) –