Помогите с проектом (Чуть-чуть осталось.Ребята выручайте!!!)
- Войдите на сайт для отправки комментариев
Вс, 11/09/2016 - 18:49
Доброго вечера. Есть проект фонаря на мк (ардуино). Нехватает чуть-чуть кодинга. Исправьте пожалуйста если где ошибаюсь. Три режима должно быть. 50%-75%-100%. То есть управления яркостью с помощью одного светодиода. Вот собственно кодинг
int regim=1;
int flag=0;
void setup() {
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(5, OUTPUT);
}
void loop() {
if(digitalRead(2)==HIGH&&flag==0)
{
regim++;
flag=1;
if(regim>3)
{
regim=1;
}
if(digitalRead(2)==LOW&&flag==1)
{
flag=0;
}
if(regim==1)//первый режим
{
analogWrite(5,85);
}
if(regim==2)//второй режим
{
analogWrite(5,170);
}
if(regim==3)//третий режим
{
analogWrite(5,255);
}
}}
Для чего подключаете первый пин?
Ой, забыл удалить. Или по просту посчитайте, что первого пина нет и все. А насчет условий, выражений что добавите? Логика неправильная мне кажется
Я не совсем уверен. В первый if вложены остальные if-ы. Может их просто расставить попорядку без вложения.
Т.е. в строку 17 поставить закрывающюю скобку и в 38 одну убрать.
А как сейчас реагирует светодиод на нажатие кнопки?
Возможен еще дребезг контактов
режим 2 совершенно бесполезен. так как нет никаких задержек
До написания скетча проверяли, как светит диод на значениях 50, 75% ? Один может полностью погаснуть и на 50%, а другой незначительно темнее светить.
voidloop() {..........
val = analogRead(analogPin);// считываем значениеSerial.println(val);// выводим полученное значениеSerial.println();
delay(1000);
}
Зачем аналоговый вход? Если я считаю с цифрового?! Еще идей?!
выводим в монитор порта.
жмем/отпускаем кнопку и видим визуально, что происходит..
Уже все сказано.
До написания скетча определите какие значения подавать на пятый пин. А ваши 50, 75 процентов просто расчитаны или проверены опытным путем?
Потом добавьте delay (200)
Если не заработает как нужно, то выводите в 17-ой строке Serial.println(regim)
08pinMode(5, OUTPUT);Для вызова analogWrite() нет необходимости устанавливать тип вход/выхода функцией pinMode().
http://arduino.ru/Reference/AnalogWrite
А зачем сложности городить?
const int btm_pin=2; const int PWM_pin =5; int regim=1; int btm_old,btm; void setup() { pinMode(btm_pin, INPUT); btm = digitalRead(btm_pin); } void loop() { delay (200); btm_old = btm; btm = digitalRead(btm_pin); if (!btm_old&&btm) regim++; if (regim == 3) regim=0; switch (regim){ case 0://первый режим analogWrite(PWM_pin,85); break; case 1://второй режим analogWrite(PWM_pin,170); break; case 2://третий режим analogWrite(PWM_pin,255); break; } }балалайка
int regim=1; int flag=0; void setup() { pinMode(1, INPUT); pinMode(2, INPUT); pinMode(5, OUTPUT); } void loop() { if(digitalRead(2)==HIGH&&flag==0) { regim++; flag=1; if(regim>3) { regim=1; } if(digitalRead(2)==LOW&&flag==1) { flag=0; } if(regim==1)//первый режим { analogWrite(5,85); } if(regim==2)//второй режим { analogWrite(5,170); } if(regim==3)//третий режим { analogWrite(5,255); } }}выбесит дребезгом, а балалайка #11 - тупняком.