Как написать скетч - при поворачивание потенциометра чтобы один светодиод горел из 8 ми по очереди , как определение положение потенциометра.
Что то рановато студенты появились с хотелками …
Пять лет погрысть гранит науки по спицальности, потом сесть и написать.
Какая Ардуино? Как подключен потенциометр? Как подключены светодиоды?
Лучше всего, начните со схемы.
- Надо составить схему, в которой:
Напряжение питания 5в(как вариант) , через потенциометр подаётся на
аналоговый вход ардуино .
Определены порт(-)ты для управления св.диодами которые подключены
соотв. пинам.
2.Написать соответствующий схеме скетч, в котором, в цикле loop(),
опрашивается аналоговый вход(т.е. сигнал с потенциометра), и, исходя из
полученного значения, подаются команды погасить/включить соотв.
светодиоды
P.S. Пока писал, не заметил предыдущий ответ
Да ладно, любой ИИ за минуту все напишет
пять лет, чтобы светодиодом помаргать? да уж
а иначе появляются всякие дзен буддисты, которые априори “специалисты” во всех вопросах.
Ардуино нано , потенциометр подключён на А7, светодиоды от D2-D9
Как написать например между 800 и 1023, осальное я умею .
Например:
uint16_t x = analogRead(A7);
digitalWrite(2, (x >= 800 && x <= 1023));
Спасибо сейчас попробую.
ИИ сегодня добрый))
// Светодиоды на пинах D2..D9 (8 штук)
const uint8_t ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
const uint8_t LED_COUNT = 8;
// Потенциометр
const uint8_t POT_PIN = A7;
// Предыдущий активный светодиод (чтобы не переключать зря)
int lastLed = -1;
void setup() {
for (uint8_t i = 0; i < LED_COUNT; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
Serial.begin(9600); // для отладки, можно убрать
}
void loop() {
// Читаем потенциометр (0..1023)
int potValue = analogRead(POT_PIN);
// Определяем номер светодиода: 0..7
// map() делает так, чтобы крайние положения попадали в 0 и 7
int ledIndex = map(potValue, 0, 1023, 0, LED_COUNT - 1);
ledIndex = constrain(ledIndex, 0, LED_COUNT - 1);
// Если положение изменилось — переключаем светодиоды
if (ledIndex != lastLed) {
// Гасим все
for (uint8_t i = 0; i < LED_COUNT; i++) {
digitalWrite(ledPins[i], LOW);
}
// Зажигаем нужный
digitalWrite(ledPins[ledIndex], HIGH);
lastLed = ledIndex;
Serial.print("ADC: ");
Serial.print(potValue);
Serial.print(" LED #");
Serial.println(ledIndex + 1);
}
delay(20); // небольшая пауза от дребезга
}
Сложновато для новичка ИМХО
Как написать например между 800 и 1023, осальное я умею .
uint16_t x = analogRead(A7);
if (x >= 896 && x <= 1023)
{
//Что-то делаем
}
else if (x >= 768 && x < 896)
{
//Что-то делаем
}
else if (x >= 640 && x < 768)
{
//Что-то делаем
}
// и.т.д.
Как вариант
ИИ сегодня добрый))
Вот только человек сам думать начал ![]()
Вот только человек сам думать начал
ну ты и наивный, я просто еще одну флудотему попытался закрыть.
ну ты и наивный
Надеюсь на лучшее
Как вариант
Нет, это сложнее. Хотя бы потому, что светодиоды необходимо не только зажигать, но и гасить. В моем случае это делается автоматически, в твоем с гашением нужно заморачиваться отдельно ))
Нет, это сложнее.
Ну, я в душе ещё новичок, помню, как оно всё не понятно было)
Если чел задаёт вопросы, подобные ТС, вряд ли он поймёт ваш вариант, (как и массивы, map(), и.т.д) хотя да, согласен, так гораздо проще.
И в итоге не поймёт, что зажжённый светодиод надо гасить
Всё норм! А учитывая ваш скетч для меня, то и можно приобщиться к Сегодня 256-ой день в году, с праздником!