Управление диодами
- Войдите на сайт для отправки комментариев
Ср, 22/11/2017 - 20:12
Здраствуйте! Написал скетч, но он не работает. При считывании с потенциометра в диапазоне от 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);
}
}
Проблема в том, что жесть - это холоднокатаная отожжённая листовая сталь толщиной 0,10—0,36 мм .... Вот если бы она была отмороженной, так нет же она сволочь - отожжённая!
Я готов обсудить с Вами Ваш скетч, но для начала выложите его как положено.
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); } }У Вас фантазии на имена переменных не хватило? Сначала FWD это у Вас номер пина, а потом Вы в эту же переменную считываете показания потенциометра. В результате Вы пытаетесь включить светодиод на пине с номером где-то от нуля до тыщи. То же самое и с REV.
И в следующий раз вставляйте скетч в сообщение по правилам.
понял, что не прописал потенциометр. изменил скетч, все равно не работает. разбираюсь...
#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); } }понял, что не прописал потенциометр. изменил скетч, все равно не работает. разбираюсь...
Вы прочитали. что вам посоветовал kalapanga? - похоже вовсе нет. Оставьте потенциометр, дело не в нем.
а в чём? я не могу понять
сообщение #7 прочитайте уже!
Не надо использовать одну и ту же переменную для номера пина и для чтения значения с потенциометра... У вас было везде FWD. теперь вы ее "исправили" - стало везде FWD1
Сейчас правильно понял?
#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); } }Идите от сюда. Ардуина не ваше. Заливка знаний не приводит вас к нужному результату
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); }Сейчас правильно понял?
правильно, но очень много лишнего в коде - см. сообщение qwone. На его брюзжание можешь внимания не обращать :)
спасибо)
не нервничайте.
Ардуино мне интересно, буду учиться.
не все сразу программистами стали.
спасибо)
иду дальше читать
Вы лучше книжку почитайте. Если для самых - самых чайников, то хоть вот такую
я её уже скачал и распечатал)
а вот полный образец скетча
сильно коряво?
#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); }