arduino uno. Столкнулся с непонятным языком программирования

Обсуждаем контроллеры компании Atmel.
Ответить
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1644
Зарегистрирован: Сб фев 18, 2012 15:42:29
Откуда: Курск

Сообщение mixon46 »

столкнулся с непонятным для себя языком программирования. ну или как его там. видоизмененный С. или что это вообще не пойму. а нужно значит что. серво привод подключил к ардуино. нужно по 10 прибавлять в servo.write(). что бы повернуть на нужный угол да? в скобочки ставлю переменную типа так servo.write(pwm) а компилятор при этом ругается тому что я делаю что то не так. и как быть. не могу понять что я не так то делаю. логично же рассуждаю.

Добавлено after 7 minutes 41 second:
переменную объявил в самом начале после библиотек и работает вроде

Добавлено after 8 minutes 26 seconds:
#include <Servo.h> //используем библиотеку для работы с сервоприводом
Servo servo;
int pwm=90;

void setup()

{

servo.attach(10);


}

void loop()

{

servo.write(pwm);

delay(2000);

pwm+10;

}


теперь он просто стоит на месте. а по логике должен прибавлять по 10 и крутится. что не так то. pwm++ не работает что ли
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

pwm+=10;
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1644
Зарегистрирован: Сб фев 18, 2012 15:42:29
Откуда: Курск

Сообщение mixon46 »

работает :)) спасибо. как я понимаю когда счет дойдет до 65 тысяч то перекрутится снова на начальное положение


на 120 градусов может поворачиваться. все что выше сбрасывается на ноль градусов. не знаю почему


хочу вывести на дисплей градус на который повернулся сервопривод. как я понимаю если написать lcd.print(pwm); то это вовсе не означает что я вывожу цифру на дисплей. как тогда вывести? за каждой цифрой свой код в таблице. соответственно мне нужно например число 114 разбить на цифры. затем выставить курсор на первую ячейку как и желаю. и вывести сотню на дисплей. далее переставить курсор на вторую ячейку и вывести десяток. и так далее. что то сложно но работать должно. по крайней мере мне раньше приходилось разбивать числа на цифры и выводить. должно получится. наверняка есть способ проще о котором я не догадываюсь пока что


епт. как просто то. всего то и надо lcd.print(pwm, DEC); то есть вывод в десятичной форме. ну все держитесь. перехват кодов уже идет :))
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

При каком значении pwm в исходное положение (0) встает ? servo.write вроде прям в градусах и принимает значения. простые дешевые сервы, бывает, глючат, хотя 120 что то мало - у меня даже глючные до 160-170 поворачивались
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1644
Зарегистрирован: Сб фев 18, 2012 15:42:29
Откуда: Курск

Сообщение mixon46 »

ну при 120 и проворачивается обратно. скажу честно я его при первом подключении переполюсовал. возможно я его подпалил. он крутится довольно не плавно. как бы подергивается. хотя я больше грешу на скетч который нашел в интернете. потом я и сам пробовал писать скетч. все вроде нормально работает. поэтому больше 120 я не ввожу. иначе он просто перепрыгнет

я написал вот таким образом
Спойлер#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo;
LiquidCrystal lcd(13, 12, 2, 3, 4, 5); // (RS, E, DB4, DB5, DB6, DB7)
char pwm=0;
int a=0;


void setup()

{

servo.attach(10);
lcd.setCursor(0, 0);

}

void loop()

{
for (a=0; a<60; a++)
{servo.write(pwm);
delay(500);
pwm+=2;
lcd.setCursor(0, 0);
lcd.print(pwm, DEC);
}

for (a=0; a<60; a++)
{servo.write(pwm);
delay(500);
pwm-=2;
lcd.setCursor(0, 0);
lcd.print(pwm, DEC);
}

}
и вывожу на экран угол в десятичной форме. если больше 120 перепрыгнет. во втором цикле for не помешало бы сделать очистку дисплея если значение меньше 100 и если меньше 10. но это уже другая история. да и не к чему. все и так понятно
Реклама
Ответить

Вернуться в «AVR»