Мне нужен код для пары из 6 LDR/LED
Каждый LDR подключен к одному светодиоду, потому что я делаю модель парковки. Я пробовал, но безуспешно. Помогите!
int ledPin = 11;
int sensorInput = A0;
boolean ledIsOn = false;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int lightLevel = analogRead(A0);
if (ledIsOn) {
if (lightLevel > 600) {
ledIsOn = false;
}
} else {
if (lightLevel < 400) {
ledIsOn = true;
}
}
digitalWrite(ledPin, ledIsOn);
Serial.println(lightLevel);
}
*это код для одного светодиода на один датчик LDR, но я не могу сделать 6 светодиодов на 6 LDR
и я сделал этот код для 6 LDR
#define pin_size 6
const int pin[pin_size] = { A0, A1, A2, A3, A4, A5};
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0 ; i < pin_size; i++) {
Serial.print(analogRead(pin[i]));
Serial.print(" - ");
Serial.print(i);
Serial.print(" | ");
}
Serial.print("\n");
delay(1000);
}
@Rana, 👍-1
Обсуждение1 ответ
▲ 1
Вам нужно преобразовать все обычные переменные в массивы. Цикл по каждому индексу и выполнить то же самое, что и раньше для каждого индекса.
const int pin_size 6
int ledPins[] = {3, 4, 5, 6, 7, 8};
int sensorPins[] = {A0, A1, A2, A3, A4, A5};
boolean ledIsOn[] = {false, false, false, false, false, false};
void setup() {
for (int i = 0 ; i < pin_size; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
for (int i = 0 ; i < pin_size; i++) {
int lightLevel = analogRead(sensorPins[i]);
if (ledIsOn[i]) {
if (lightLevel > 600) {
ledIsOn[i] = false;
}
} else {
if (lightLevel < 400) {
ledIsOn[i] = true;
}
}
digitalWrite(ledPins[i], ledIsOn[i]);
Serial.println(lightLevel);
}
}
,
@Gerben
похоже, вы выполнили школьное задание ОП., @jsotola
@jsotola Я не был до конца уверен и отнесся к этому с пониманием., @Gerben
Вы, возможно, правы в своих мыслях... Я не хочу принижать ваш выбор ответа, мне просто интересно, узнал ли автор чего-нибудь, @jsotola
Смотрите также:
- (Код ультразвукового датчика: такого файла или каталога нет)
- Несколько неблокирующих таймеров обратного отсчета?
- Датчик HC-SR505 PIR выдает только HIGH уровень
- Реализовать связь Visible Light с помощью Arduino
- Количество мигающих светодиодов с датчиком LDR
- Отправка данных из ESP8266 в PHP
- Определение уровня заряда с помощью датчика тока (ACS758) с arduino uno
- Использование YS-IRTM с Arduino Uno
Добро пожаловать в Arduino:SE. Пожалуйста, имейте в виду, что это не бесплатный дизайн-центр и не техническая энциклопедия по запросу. Пожалуйста, пересмотрите свой вопрос, показав свою работу и выводы на данный момент. Возможно, вам будет полезно просмотреть сайт [tour](https://arduino.stackexchange.com/tour) и [Help Centre](https://arduino.stackexchange.com/help) и, в частности, [ask]., @sempaiscuba
Я попытался
... пожалуйста, покажите работу, которую вы проделали ... у вас есть вопрос? ... вы ничего не спросили., @jsotolaЕсли вы хотите, чтобы одно и то же действие повторялось несколько раз с несколькими настройками или значениями, может быть полезно обобщить его, создав класс, а затем создав один экземпляр объекта для каждой пары светодиод + фоторезистор., @Majenko
можете ли вы объяснить подробнее?, @Rana
вы опубликовали рабочий код для одной пары LDR/LED .... пожалуйста, опубликуйте код, который не работает, @jsotola
Это код для одного светодиода на один датчик LDR, но я не могу сделать 6 светодиодов на 6 LDR, @Rana
примечание: вам не нужен этот оператор
if (ledIsOn) {
..... только две строкиif (lightLevel > 600) ledIsOn = false;
иif (lightLevel < 400) ledIsOn = true;
, @jsotolaХорошо, можете ли вы помочь мне с кодом для 6 LDR и 6 светодиодов, но я не могу этого сделать., @Rana
используйте
lightLevel_1
,ledIsOn_1
,lightLevel_2
,ledIsOn_2
,lightLevel_3
,ledIsOn_3
и т. д., @jsotolaКажется, я не могу этого сделать
... вы все еще не опубликовали свой код, который вы попробовали, но он не работает так, как ожидалось, @jsotolaЯ отредактировал свой пост сейчас, @Rana
У меня есть код для 6 LDR, но я не знаю, как сделать код с 6 LDR и 6 светодиодами., @Rana
выводит ли этот код значения из 6 LDR? ..... сделайте сравнение внутри цикла
for
.... добавьте код, который используетlightLevel[i]
иledIsOn[i]
, @jsotolaэтот код предназначен только для 6 LDR, и мне нужно добавить к нему 6 светодиодов, поскольку мой проект заключается в создании 6 пар LDR/LED., @Rana
можете ли вы мне помочь с кодами?, @Rana
Вы действительно понимаете, что именно делает код для 1 пары LDR/LED? Кажется, нет. Вы уже создали цикл
for
, который перебирает все аналоговые входы. Теперь создайте массив с номерами контактов светодиодов, как вы делали с аналоговыми контактами. Внутри циклаfor
сделайте то, что вы делали раньше с 1 парой LDR/LED: считайте аналоговое значение в переменную, проверьте, находится ли переменная выше600
или ниже400
, и используйтеdigitalWrite()
с соответствующим номером контакта (из массива), чтобы установить правильное значение. Если вы не можете этого сделать, вы не поняли, что делает исходный код., @chrisl