Рано обрадовался. Серва при нажатии кнопки 3 (7) переходит в сохранённую позицию, сразу возвращается обратно и опять идёт в сохранённую позицию. При нажатии кнопки 4 (8) тоже двойное движение. С таким поведением сервы ещё не сталкивался.
Нажимаю кнопку 3 - серва переходит в сохранённое положение - сразу возвращается обратно - опять идёт в сохранённое положение. Нажимаю кнопку 4 - та же картина, только наоборот. Прикольные двойные движения туды-сюды. Только вот откуда они взялись?
Ни один скетч не смог загрузить. Ошибку выдает уже с первых строк чтения любого, из тутошних, скетча!
То я делаю ни так???
А Вы прямо из сообщения тексты скетчей к себе копируете, или нажимете на всплывающей панельке кнопочку "код" и уже оттуда? Оттуда надо! Если скетчи копируете правильно, то скопируйте сюда текст сообщения об ошибке.
Я это делаю из копии файла по кнопке "цитировать" Там их не видно:)
Жестко вы с ними однако. Наводите курсор справа от первой строки кода, в всплывающем окне значок "code", дальше по накатанной: Ctrl-A, Ctrl-C, Ctrl-V. ))))
#include <Servo.h> #include <EEPROM.h> Servo myservo1; Servo myservo2; const int buttonPin = 0; const int led1Pin = 2; const int led2Pin = 3; const int led3Pin = 4; const int led4Pin = 5; const int led5Pin = 6; const int led6Pin = 7; const int BUTTON1 = 1; const int BUTTON2 = 2; const int BUTTON3 = 3; const int BUTTON4 = 4; const int BUTTON5 = 5; const int BUTTON6 = 6; const int BUTTON7 = 7; const int BUTTON8 = 8; const int BUTTON9 = 9; const int BUTTON10 = 10; const int BUTTON1LOW = 1005; const int BUTTON1HIGH = 1024; const int BUTTON2LOW = 960; const int BUTTON2HIGH = 990; const int BUTTON3LOW = 925; const int BUTTON3HIGH = 945; const int BUTTON4LOW = 880; const int BUTTON4HIGH = 900; const int BUTTON5LOW = 830; const int BUTTON5HIGH = 870; const int BUTTON6LOW = 760; const int BUTTON6HIGH = 800; const int BUTTON7LOW = 690; const int BUTTON7HIGH = 730; const int BUTTON8LOW = 570; const int BUTTON8HIGH = 650; const int BUTTON9LOW = 480; const int BUTTON9HIGH = 540; const int BUTTON10LOW = 250; const int BUTTON10HIGH = 350; int ledState = HIGH; int buttonState; int lastButtonState = LOW; long lastDebounceTime = 0; long debounceDelay = 50; int inputMode1 = 1; int inputMode2 = 1; int pot1pin = 1; int pot2pin = 2; int val1; int val2; int addr = 0; byte value; int pos = 0; void setup() { pinMode(buttonPin, INPUT); pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); pinMode(led5Pin, OUTPUT); pinMode(led6Pin, OUTPUT); myservo1.attach(9); myservo2.attach(10); Serial.begin(9600); } void loop() { if(inputMode1) { val1 = analogRead(pot1pin); val1 = map(val1, 0, 1023, 0, 179); myservo1.write(val1); delay(15); if(inputMode2) { val2 = analogRead(pot2pin); val2 = map(val2, 0, 1023, 0, 179); myservo2.write(val2); delay(15); Serial.println(val1); Serial.println(val2); int reading = analogRead(buttonPin); Serial.println(reading); int tmpButtonState = LOW; if(reading>BUTTON10LOW && reading<BUTTON10HIGH){ tmpButtonState = BUTTON10; }else if(reading>BUTTON9LOW && reading<BUTTON9HIGH){ tmpButtonState = BUTTON9; }else if(reading>BUTTON8LOW && reading<BUTTON8HIGH){ tmpButtonState = BUTTON8; }else if(reading>BUTTON7LOW && reading<BUTTON7HIGH){ tmpButtonState = BUTTON7; }else if(reading>BUTTON6LOW && reading<BUTTON6HIGH){ tmpButtonState = BUTTON6; }else if(reading>BUTTON5LOW && reading<BUTTON5HIGH){ tmpButtonState = BUTTON5; }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){ tmpButtonState = BUTTON4; }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){ tmpButtonState = BUTTON3; }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){ tmpButtonState = BUTTON2; }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){ tmpButtonState = BUTTON1; }else{ tmpButtonState = LOW; } if (tmpButtonState != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { buttonState = tmpButtonState; Serial.println(buttonState); } lastButtonState = tmpButtonState; switch(buttonState){ case BUTTON1: EEPROM.write(addr, 0); EEPROM.write(25, 0); break; case BUTTON2: EEPROM.write(addr, val1); EEPROM.write(25, 1); delay(100); break; case BUTTON3: inputMode1=0; EEPROM.read(25) == 1; value = EEPROM.read(addr); delay(100); for(pos = val1; pos < value; pos += 1) { myservo1.write(pos); delay(30); } for(pos = val1; pos > value; pos-=1) { myservo1.write(pos); delay(30); break; case BUTTON4: inputMode1=1; for(pos = value; pos < val1; pos += 1) { myservo1.write(pos); delay(90); } for(pos = value; pos > val1; pos-=1) { myservo1.write(pos); delay(90); break; case BUTTON5: EEPROM.write(addr, 0); EEPROM.write(55, 0); break; case BUTTON6: EEPROM.write(addr, val2); EEPROM.write(55, 1); delay(100); break; case BUTTON7: inputMode2=0; EEPROM.read(55) == 1; value = EEPROM.read(addr); delay(100); for(pos = val2; pos < value; pos += 1) { myservo2.write(pos); delay(30); } for(pos = val2; pos > value; pos-=1) { myservo2.write(pos); delay(30); break; case BUTTON8: inputMode2=1; for(pos = value; pos < val2; pos += 1) { myservo2.write(pos); delay(90); } for(pos = value; pos > val2; pos-=1) { myservo2.write(pos); delay(90); break; } } } } } } } }А что именно не так?
Нажимаю кнопку 3 или 7 и всё зависает и другие кнопки не работают. В serial тоже всё останавливается
В скетче с кнопками на цифровых пинах этого не было
Что вы пытаетесь сделать вот в этих строках?
И как так получилось, что скобка тела цикла открылась и не закрылась?
for(pos = val1; pos > value; pos-=1) { myservo1.write(pos); delay(30); break;Кнопкой 2 записываю положение серво1 в 25 ячейку памяти, кнопкой 6 положение серво2 в 55 ячейку.
Считываю данные из 25 ячейки и аналогично из 55
И как так получилось, что скобка тела цикла открылась и не закрылась?
for(pos = val1; pos > value; pos-=1) { myservo1.write(pos); delay(30); break;В конце скетча все скобки.
Считаваете из ячеек и что дальше ??? сравниваете с 1 , а для чего?
И как так получилось, что скобка тела цикла открылась и не закрылась?
for(pos = val1; pos > value; pos-=1) { myservo1.write(pos); delay(30); break;В конце скетча все скобки.
Это какэто??????????? Выпонимаете что у вас в этом случае происходит?????
Именно по этому у вас все виснет...
1. Закрываете все циклы по нормальному.
2. с 3 и 7 делаете так:
case BUTTON3: inputMode1=0; if(EEPROM.read(25) == 1) { value = EEPROM.read(addr); delay(100); for(pos = val1; pos < value; pos += 1) { myservo1.write(pos); delay(30); } for(pos = val1; pos > value; pos-=1) { myservo1.write(pos); delay(30); } } break;Все скобки проверил - куча ошибок. Поставил правильно (цыклы закрыл). Но глюк остался. Нажимаю кнопку 3 или 7 и всё виснет
Пока писал сообщение не увидел ваш последний пост. Сейчас переделаю.
Цыклы скобками закрыл, кнопки 3 и 7 сделал через оператор if- при нажатии 3 и 7 виснет и другие кнопки не работают
А серва двигается?
Выход из состояния , определяемого кнопкой 3, должен произходить при нажатии кнопки 4. Может там у меня ошибка ?
Попробовал и такой вариант - без изменений.
case BUTTON4 if(inputMode1=1) { for(pos = value; pos < val1; pos += 1) { myservo1.write(pos); delay(90); } for(pos = value; pos > val1; pos-=1) { myservo1.write(pos); delay(90); } } break;Да, серва работает и возвращается в запомненную позицию. Но после этого тишина - в обратное положение при нажатии кнопки 4 не идёт.
Нашёл ещё ошибку- в строках 87 и 93 не поставил скобки. Теперь работает. maksim СПАСИБО за помощь!
Рано обрадовался. Серва при нажатии кнопки 3 (7) переходит в сохранённую позицию, сразу возвращается обратно и опять идёт в сохранённую позицию. При нажатии кнопки 4 (8) тоже двойное движение. С таким поведением сервы ещё не сталкивался.
Еще поподтобнее
Нажимаю кнопку 3 - серва переходит в сохранённое положение - сразу возвращается обратно - опять идёт в сохранённое положение. Нажимаю кнопку 4 - та же картина, только наоборот. Прикольные двойные движения туды-сюды. Только вот откуда они взялись?
vvadim Спасибо за тему
В мои 70 надоело крутить рукоятки моих самоделок ручами.
Из материалов этого форума понял – моя идея где-то на 80% совместима с Вашей!
Решил, из матеериалов тут опубликованных понять как и что мне делать. Но…
Ни один скетч не смог загрузить. Ошибку выдает уже с первых строк чтения любого, из тутошних, скетча!
То я делаю ни так???
Спасибо !
Ни один скетч не смог загрузить. Ошибку выдает уже с первых строк чтения любого, из тутошних, скетча!
То я делаю ни так???
А Вы прямо из сообщения тексты скетчей к себе копируете, или нажимете на всплывающей панельке кнопочку "код" и уже оттуда? Оттуда надо! Если скетчи копируете правильно, то скопируйте сюда текст сообщения об ошибке.
vvadim Спасибо за тему
В мои 70 надоело крутить рукоятки моих самоделок ручами.
Из материалов этого форума понял – моя идея где-то на 80% совместима с Вашей!
Решил, из матеериалов тут опубликованных понять как и что мне делать. Но…
Ни один скетч не смог загрузить. Ошибку выдает уже с первых строк чтения любого, из тутошних, скетча!
То я делаю ни так???
Спасибо !
больше было бы для вас пользы создать тему и в ней поделиться своими бедами))))
эта уже древняя и в неё мало кто заглянет.
Спасибо!
не знаю стоит ли мне дергаться.
Кажется, времени затрачу столько же сколько на самостоятельный разбор:)
ну, дело ваше...
Ура!
Получилось загрузить Ваш скетч из поста #51
Моя ошибка была в ардуинке установленой не корректно. Переустановил "по науке" и ... наступила ура!
Теперь буду выгребать (из скетча по смыслу) какие деталюшки и куда подключены!
...с этим все понятно - разобрался.
Буду признателен есили откликнитесь на vladtimof в моем скайпе.
С уважением- ra9un (Владимир, г.Кемерово)
СПАСИБО за ЭТОТ форум!
В неудачных попытках пробовал всяко - без толку было.
Просто моя ардуинка стояла без дравера (недавно комп обновлял, не про все сразу вспомнил:)
Теперь влетают.
Но лучше без нумерации строк копировать.
Я это делаю из копии файла по кнопке "цитировать" Там их не видно:)
Ура!
Получилось загрузить Ваш скетч из поста #51
Моя ошибка была в ардуинке установленой не корректно. Переустановил "по науке" и ... наступила ура!
Теперь буду выгребать (из скетча по смыслу) какие деталюшки и куда подключены!
...с этим все понятно - разобрался.
Буду признателен есили откликнитесь на vladtimof в моем скайпе.
С уважением- ra9un (Владимир, г.Кемерово)
СПАСИБО за ЭТОТ форум!
напишите мне о своих задачах
7808543@gmail.com
скайпом не пользуюсь
Я это делаю из копии файла по кнопке "цитировать" Там их не видно:)
Жестко вы с ними однако. Наводите курсор справа от первой строки кода, в всплывающем окне значок "code", дальше по накатанной: Ctrl-A, Ctrl-C, Ctrl-V. ))))
век живи - век учись:)
Спасибо аднака!
А можно ли (и как) сюда помещать свои картинки?
Спасибо огромное! Отправил подробности хотелки в личку.
Для пользователей форума - в принципе то же самое что и изложено в первом посте форума.
век живи - век учись:)
Спасибо аднака!
А можно ли (и как) сюда помещать свои картинки?
Привет!
по ссылке http://arduino.ru/forum/programmirovanie/eepron-kak-khranilishche оздал форум EEPRON как хранилище.
Спаял времянку-интерфейс.
Пробую скетч maksim от 24.05.2012