Обсуждаем контроллеры компании Atmel.
Ответить

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

Пн янв 08, 2018 16:55:38

столкнулся с непонятным для себя языком программирования. ну или как его там. видоизмененный С. или что это вообще не пойму. а нужно значит что. серво привод подключил к ардуино. нужно по 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++ не работает что ли

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

Пн янв 08, 2018 16:57:49

pwm+=10;

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

Пн янв 08, 2018 17:00:42

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


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


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


епт. как просто то. всего то и надо lcd.print(pwm, DEC); то есть вывод в десятичной форме. ну все держитесь. перехват кодов уже идет :))

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

Вт янв 09, 2018 10:17:36

При каком значении pwm в исходное положение (0) встает ? servo.write вроде прям в градусах и принимает значения. простые дешевые сервы, бывает, глючат, хотя 120 что то мало - у меня даже глючные до 160-170 поворачивались

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

Вт янв 09, 2018 11:42:39

ну при 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. но это уже другая история. да и не к чему. все и так понятно
Ответить