Управление диодами

iWinneR
Offline
Зарегистрирован: 22.11.2017

Здраствуйте! Написал скетч, но он не работает. При считывании с потенциометра в диапазоне от 505 до 1023 должен гореть светодиод на пине №8, а в диапазоне с 0 до 504 должен гореть диод на пине №12В. чём может быть проблема?

int FWD = 8;
int REV = 12;
 
void setup() {
pinMode(FWD, OUTPUT);
pinMode(REV, OUTPUT);
  
}
 
void loop() {
  
  
  FWD = analogRead(0);
  if (FWD >505 && FWD <1023) {
  digitalWrite = (FWD, HIGH);
  } else {
    digitalWrite = (FWD, LOW);
  }
  
   
  
 REV = analogRead(0);
  if (REV >0 && REV <504) {
  digitalWrite (REV, HIGH);
  } else {
    digitalWrite (REV, LOW);
  }
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Проблема в том, что жесть - это холоднокатаная отожжённая листовая сталь толщиной 0,10—0,36 мм .... Вот если бы она была отмороженной, так нет же она сволочь - отожжённая!

Я готов обсудить с Вами Ваш скетч, но для начала выложите его как положено.

iWinneR
Offline
Зарегистрирован: 22.11.2017
int FWD = 8;
int REV = 12;
 
void setup() {
pinMode(FWD, OUTPUT);
pinMode(REV, OUTPUT);
  
}
 
void loop() {
  
  
  FWD = analogRead(0);
  if (FWD >505 && FWD <1023) {
  digitalWrite = (FWD, HIGH);
  } else {
    digitalWrite = (FWD, LOW);
  }
  
   
  
 REV = analogRead(0);
  if (REV >0 && REV <504) {
  digitalWrite (REV, HIGH);
  } else {
    digitalWrite (REV, LOW);
  }
}

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

У Вас фантазии на имена переменных не хватило? Сначала FWD это у Вас номер пина, а потом Вы в эту же переменную считываете показания потенциометра. В результате Вы пытаетесь включить светодиод на пине с номером где-то от нуля до тыщи. То же самое и с REV.

И в следующий раз вставляйте скетч в сообщение по правилам.

iWinneR
Offline
Зарегистрирован: 22.11.2017

понял, что не прописал потенциометр. изменил скетч, все равно не работает. разбираюсь...

#define FWD1 8
#define REV1 12
#define joy A0

void setup() {
pinMode(FWD1, OUTPUT);
pinMode(REV1, OUTPUT);
pinMode(joy, INPUT);  
}

void loop() {
  
   FWD1 = analogRead(joy);
  if (joy >505 && joy <1023) {
  digitalWrite = (FWD1, HIGH);
  } else {
    digitalWrite = (FWD1, LOW);
  }
  
  
  
 REV1 = analogRead(joy);
  if (joy >0 && joy <504) {
  digitalWrite (REV1, HIGH);
  } else {
    digitalWrite (REV1, LOW);
  }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

iWinneR пишет:

понял, что не прописал потенциометр. изменил скетч, все равно не работает. разбираюсь...

Вы прочитали. что вам посоветовал kalapanga? - похоже вовсе нет. Оставьте потенциометр, дело не в нем.

iWinneR
Offline
Зарегистрирован: 22.11.2017

а в чём? я не могу понять

b707
Offline
Зарегистрирован: 26.05.2017

сообщение #7 прочитайте уже!

Не надо использовать одну и ту же переменную для номера пина и для чтения значения с потенциометра... У вас было везде FWD. теперь вы ее "исправили" - стало везде FWD1

 

iWinneR
Offline
Зарегистрирован: 22.11.2017

Сейчас правильно понял?



#define FWD1 8
#define REV1 12
#define joy A0

void setup() {
pinMode(FWD1, OUTPUT);
pinMode(REV1, OUTPUT);
pinMode(joy, INPUT);  
}

void loop() {
  int FWD;
  
   FWD = analogRead(joy);
  if (joy >505 && joy <1023) {
  digitalWrite = (FWD1, HIGH);
  } else {
    digitalWrite = (FWD1, LOW);
  }
  
  int REV
  
 REV = analogRead(joy);
  if (joy >0 && joy <504) {
  digitalWrite (REV1, HIGH);
  } else {
    digitalWrite (REV1, LOW);
  }
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Идите от сюда. Ардуина не ваше. Заливка знаний не приводит вас к нужному результату

const byte FWDpin = 8; //<- это у вас номер пина
const byte REVpin = 12;//<- это у вас номер пина
const byte joyPin = A0;//<- это у вас номер пина

void setup() {
  pinMode(FWDpin, OUTPUT);
  pinMode(REVpin, OUTPUT);
  pinMode(joyPin, INPUT);
}

void loop() {
  int Sens = analogRead(joyPin);//<- это у вас значение на выводе
  digitalWrite(FWDpin, LOW);
  digitalWrite(REVpin, LOW);
  if (Sens > 505) digitalWrite(FWDpin, HIGH);
  else digitalWrite(REVpin, HIGH);
}

 

b707
Offline
Зарегистрирован: 26.05.2017

iWinneR пишет:

Сейчас правильно понял?

правильно, но очень много лишнего в коде - см. сообщение qwone. На его брюзжание можешь внимания не обращать :)

iWinneR
Offline
Зарегистрирован: 22.11.2017

спасибо)
не нервничайте.
Ардуино мне интересно, буду учиться.
не все сразу программистами стали.

iWinneR
Offline
Зарегистрирован: 22.11.2017

спасибо)
иду дальше читать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы лучше книжку почитайте. Если для самых - самых чайников, то хоть вот такую

iWinneR
Offline
Зарегистрирован: 22.11.2017

я её уже скачал и распечатал)
а вот полный образец скетча

сильно коряво?

#include <Servo.h>
const byte FWDpin = 8; 
const byte REVpin = 12;
const byte joyPin = A0;
int Driver1;
int Driver2;


Servo servo;
void setup() {
pinMode(FWDpin, OUTPUT);
  pinMode(REVpin, OUTPUT);
  pinMode(joyPin, INPUT);
  servo.attach(5);
  }
void loop() {
  int Sens = analogRead(joyPin);//<- это у вас значение на выводе
  digitalWrite(FWDpin, LOW);
  digitalWrite(REVpin, LOW);
  if (Sens > 510) digitalWrite(FWDpin, HIGH);
  else digitalWrite(REVpin, HIGH);
  Driver1 = analogRead(0);
  Driver1 = map(Driver1, 505, 1023, 0, 255);
  Driver1 = constrain(Driver1, 0, 255);
  analogWrite(3, Driver1); 
  Driver2 = analogRead(!0);
  Driver2 = map(Driver2, 0, 500, 255, 0);
  Driver2 = constrain(Driver2, 0, 255);
  analogWrite(3, Driver2);
  int Joy_Y = analogRead(5);
  Joy_Y = map(Joy_Y, 0, 1023, 0, 180);
  servo.write(Joy_Y);
  delay(2);

}