Есть вопрос, уважаемые программисты.
- Войдите на сайт для отправки комментариев
Пнд, 11/01/2016 - 11:07
Здравствуйте. Я новичек в работе с arduino. Недавно встретился с проблемой. Проект такой: есть движковый резистор alpha A10k. Подключён к аналоговому входу А0. Программно разделил входящие данные на 133, чтобы получились значения от 0 до 9. Мне нужно, чтобы при определённом положении резистора срабатывал сигнал на реле. Это возможно? Помогите пожалуйста с кодом. Вот что я написал:
#define ZAMOK 11
void setup() {
Serial.begin(9600);
pinMode (ZAMOK,OUTPUT);
}
int x = 0;
void loop() {
digitalWrite (ZAMOK,HIGH);
x=analogRead(A0)/113;
Serial.println(x);
if (x==2);
{
Serial.print("open");
digitalWrite (ZAMOK,!ZAMOK);
}}
Не работает реле и в мониторе порта постоянно "open". ПОМОГИТЕ!!!!!!!
строка 15
http://arduino.ru/Reference/DigitalWrite
UPD: Для начала строка 12, в конце лишняя точка с запятой.
написанное выше.
+ программа работает один раз. зациклите. ваил(1) {}
2*113=226. поймаите 226(грубо) откроется.
уберите деление, проверяйте лучше промежуток больше или/и меньше <>
да и схему подключения своего резистора покажите, а то может что напутали
Здравствуйте. Я новичек
Не работает реле
Подайте питание на реле. сщелкает? (проверьте тестером на замыканее контактов) Работает.
Не в реле дело. правьте код прошивки.
Здравствуйте!
Спасибо всем за ответы. Исправил ";", "ZAMOK, LOW".
Не понимаю что значит "зациклить ваил"
Из резистора 4 контакта под номерами 1,2,2,3. Один контакт 2 на землю, 1 и 3 на сигнал и на +5.
С подключением должно быть всё в порядке,т.к. мониторинг портов рисует символы от 0 до 9 взависимости от положения.
Короче, пока не работает. Ломаю мозг дальше. Сегодня попробую всё таки убрать знак деления и подбирать промежутки.
Вот, кое что изменил. Теоретически должно работать, но нет.
#define ZAMOK 11 void setup() { Serial.begin(9600); pinMode (ZAMOK,OUTPUT); } int x = 0; void loop() { digitalWrite (ZAMOK,HIGH); x=analogRead(A0); Serial.println(x); if (x>20&&x<40) { digitalWrite (ZAMOK,!digitalRead(ZAMOK)); }}он у вас в цикле крутится, постоянно выполняя обе команды.
строка 4, вы установили ZAMOK как выход и пытаетесь считать строка 13?
строку 8 перенести в setup или в добавить 14 строкой else и перенести туда
#define ZAMOK 11 void setup() { Serial.begin(9600); pinMode (ZAMOK,OUTPUT); digitalWrite (ZAMOK,HIGH); } int x = 0; void loop() { x=analogRead(A0); Serial.println(x); if (x>20&&x<40) { digitalWrite (ZAMOK,LOW); } else { digitalWrite (ZAMOK,HIGH); }}Заработало!!!!!!!!!!!!!!
Спасибо, Друзья огромное за помощь! Отдельное Гран мерси Valera19701!