#1 2018-03-08 22:32:31

Adruino
Учасник
Зареєстрований: 2018-03-08
Повідомлень: 1

Нужна помощь в создании стробоскопа на ардуино.

int potent_led; //переменная для хранения значения с потенциометра.

void setup()
{
Serial.begin(9600);
pinMode(3, OUTPUT); //сюда подключен светодиод
}

void loop()
{
potent_led = analogRead(A0); //потенциометр подключен в A0
potent_led = map(potent_led, 0, 1023, 0, 5000);
digitalWrite(3, HIGH);
delayMicroseconds(200);
digitalWrite(3, LOW);
delayMicroseconds(potent_led);
}

Задача при помощи изменения частоты мигания "управлять" движением вращающейся картинки. Но код работает некорректно, скорости мигания не хватает, как поправить ?

Неактивний

#2 2018-03-08 23:19:37

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: Нужна помощь в создании стробоскопа на ардуино.

Adruino пише:

Задача при помощи изменения частоты мигания "управлять" движением вращающейся картинки. Но код работает некорректно, скорости мигания не хватает, как поправить ?

Не совсем понятно что вы хотите ... и уж тем более что такое "скорости мигания не хватает"?
Но:

1. Там где вы задаёте частоту вспышек:

potent_led = map(potent_led, 0, 1023, 0, 5000);

Из документации:

На данный момент наибольшее число, позволяющее сформировать точную задержку, — 16383.
... Для создания задержек длительностью больше, чем несколько тысяч микросекунд, используйте функцию delay().

2. Arduino, вообще то говоря, игрушечная платформа big_smile ... И относительно линейности значений analogRead() там есть большие сомнения (наблюдал это делая генератор синусной яркости). У вас может быть такой шаг (ступенька) на малых значениях map(), что она уже не покрывает малые периоды повторения.

3. У вас ещё есть инерционность исполнительного механизма - что там у вас "пыхает"? Если этот фонарь достаточно инерционный то вы ничего не получите. (Можно, кстати, попробовать форсировать начальную фазу зажигания, если не просто digitalWrite(), а подавать туда аналоговое напряжение сложной формы через ШИМ/ЦАП.)

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму