Потенциометр и мигание светодиода
- Войдите на сайт для отправки комментариев
Вс, 22/03/2015 - 18:49
Всем привет, возникла такая проблемка, с ардуино я знаком совсем не давно по этому скорее всего по этому и проблема.
Хочу сделать чтоб ардуина работала следующим образом.
Подключаем потенциометр (далее ПЦ) и при его регулировании сдетодиод мигал, но мигал таким образом, когда ПЦ выставлен в нулевое положение светодиод мигает один раз, не много сдвигаем ПЦ и светодиод мигает два раза, и т.д. до 12 миганий при полностью вывернутом ПЦ.
Реально ли это сделать?
Сам скетч не осилю, если кто знает как хотя бы подскажите пожалуйста.
Я сам не спец но вот набросал и проверил в Протеусе, работает. Единственное я не понял, он должен мигнуть 5 или н раз в секунду, или просто мигнуть. Я поставил просто мигнуть с периодом 0,5 секунды и ждать следующего изменения потенциометра
//Primer1.ino int led = 13; int analogPin = 0; int val = 1; void setup() { // put your setup code here, to run once: pinMode(led, OUTPUT); Serial.begin(9600); } int potensiom () { int v; v = analogRead(analogPin); v /= 80; //Serial.println (v); return v; } void loop() { //Serial.println (potensiom ()); if(val != potensiom()) { val = potensiom(); switch (potensiom ()) { case 1: digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); break; case 2: for (int i = 0; i < 2; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } break; case 3: for (int i = 0; i < 3; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } break; case 4: for (int i = 0; i < 4; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } break; case 5: for (int i = 0; i < 5; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } break; //И так дальше до case 12: } } }А можно сократить код до такого
//Primer1.ino int led = 13; int analogPin = 0; int val = 1; void setup() { // put your setup code here, to run once: pinMode(led, OUTPUT); //Serial.begin(9600); } int potensiom () { int v; v = analogRead(analogPin); v /= 80; //Serial.println (v); return v; } void loop() { //Serial.println (potensiom ()); if(val != potensiom()) { delay(100); val = potensiom(); for (int i = 0; i < val; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } } }Здравствуйте vosara. Вы правельно меня поняли по поводу просто мигнуть, второй скетч работает отлично. Я Вам очень благодарен!!!
Добрый день . С ардуино снаком совсем недавно.(буквально 2 неделе) Подскажите как сделать так что бы светодиод мигал с упровлением потенциометром, но так что бы потенциметр будет разница от мин до макс 1 вольт, а мегание было скадем а пределе 1000
Здравствуйте, ардуина у Вас какая? И можно конкретной что Вы хотите? Чтоб при повороте потенцеометра изменялось количество миганий светодиода? Или он должен мигнуть в определённый момент?
Спасибо что ответили, идея не совчем светодиодная . Светодиод это как пример . ардуина есть микро и уно. на нем хочу сделать простой контролер для подачи воды в двигатель.Данные будет сниматься с МАП датчика с 2.5 до 3.5 вольт и подаваться на ардуино а он дплжен выдавать импульсы которые будут управлять форсункой , с увеличением вольтажа должно увеличиваться и частота . Все что косаетс железа это не проблемно, а вот программно...
http://arduino.ru/Reference/Map
Я с адруино совсем недавно для меня это сложно
За готовый рабочий код могу немного заплатить
Спасибо что ответили, идея не совчем светодиодная . Светодиод это как пример . ардуина есть микро и уно. на нем хочу сделать простой контролер для подачи воды в двигатель.Данные будет сниматься с МАП датчика с 2.5 до 3.5 вольт и подаваться на ардуино а он дплжен выдавать импульсы которые будут управлять форсункой , с увеличением вольтажа должно увеличиваться и частота . Все что косаетс железа это не проблемно, а вот программно...
А импульсы какой частоты (диапозон)?
Этот диапазон надо подбирать на месте в зависимости от производительности форсунки
const int lPin = 3; // пин подключения светодиода const int PPin = A0; // пин подключения потенциометра void setup() { pinMode(lPin, OUTPUT);// инициализируем наш пин как выход } void loop(){ analogWrite(lPin,map(analogRead(PPin),512,717,0,255)); //преобразуем аналоговое значение в яркость светодиода }Если же ШИМ не подходит а Ардуино больше ничего не будет делать можно попробовать по другому
const int lPin = 3; // пин подключения светодиода const int PPin = A0; // пин подключения потенциометра void setup() { pinMode(lPin, OUTPUT);// инициализируем наш пин как выход } void loop(){ int val = analogRead(0); val = map(val, 512,717, 0, 255); digitalWrite(lPin, HIGH); // включает светодиод delay(val); digitalWrite(lPin, LOW); // выключает светодиод delay(val); }Большой частоты не добиться потому что на analogRead уходит много времени.
Спасибо за код