Изменения яркости светодиодов
Я использую два разных типа кода и заметил, что в первой настройке последний светодиод тусклее, чем остальные. Затем во второй настройке первый светодиод ярче остальных. Я хотел бы знать, что вызывает это и как я могу это исправить. Моя конечная цель — подключить 30 светодиодов к Arduino Mega и синхронизировать их последовательность. Я строю проект с нуля, начиная с 3 светодиодов на Arduino Uno. Я очень ценю ваши идеи.
В первой настройке используется кнопка в качестве переключателя для последовательного включения 3 светодиодов с использованием резисторов 220 Ом. Первые два светодиода, подключенные к контактам 2 и 4, ярко светят, в то время как последний вы можете едва увидеть маленькую точку света.
Вот код для этого:
int ledState = 0;
int ledPin1 = 2;
int ledPin2 = 4;
int ledPin3 = 7;
int buttonState = 0;
const int buttonPin = 12;
int buttonNew;
int buttonOld;
int fiveInterval = 3000;
int oneInterval = 1000;
void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonNew = digitalRead(buttonPin);
if(buttonOld == 0 && buttonNew == 1){
if(ledState == 0){
digitalWrite(ledPin1, HIGH);
delay(fiveInterval);
digitalWrite(ledPin2, HIGH);
delay(fiveInterval);
digitalWrite(ledPin3, HIGH);
ledState = 1;
// for(int i ){
//
// }
}else{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
ledState = 0;
}
}
buttonOld = buttonNew;
delay(100);
}
Вторая настройка — это код, который я позаимствовал из учебника. 1-й светодиод (подключенный к контакту 2) в несколько раз ярче следующих светодиодов. Это синхронизированное включение / выключение 3 светодиодов с использованием резисторов 220 Ом. Вот код для этого:
#define LED_PIN_1 2
#define LED_PIN_2 4
#define LED_PIN_3 7
#define LED_NUMBER 3
byte LEDPinArray[LED_NUMBER] = { LED_PIN_1,
LED_PIN_2,
LED_PIN_3 };
int LEDIndex = 0;
void initAllLEDs()
{
for (int i = 0; i < LED_NUMBER; i++) {
pinMode(LEDPinArray[i], OUTPUT);
}
}
void powerOnSelectedLEDOnly(int index)
{
for (int i = 0; i < LED_NUMBER; i++) {
if (i == index) {
digitalWrite(LEDPinArray[i], HIGH);
}
else {
digitalWrite(LEDPinArray[i], LOW);
}
}
}
void toggleNextLED()
{
LEDIndex++;
if (LEDIndex >= LED_NUMBER) {
LEDIndex = 0;
}
powerOnSelectedLEDOnly(LEDIndex);
}
void setup()
{
initAllLEDs();
digitalWrite(LEDPinArray[LEDIndex], HIGH);
}
void loop()
{
delay(1000);
toggleNextLED();
}
@Genma, 👍1
Обсуждение0
- Остановить мигание светодиодов
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Светодиоды не загораются, даже если через них идет ток. Проблема с землей?
- Проблема с потенциометром
- Я использую этот код для изменения яркости, но она не меняется, несмотря на то, что ШИМ контакта 3 уже изменился.
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- Несколько условий оператора if
крайний правый светодиод не имеет последовательно включенного резистора, @jsotola
код был бы проще, если бы вы использовали массивы...
ledPin[1]
,ledPin[2]
и т. д. таким образом, вы можете использовать цикл для включения всех, у которых индекс меньше или равноLEDIndex
, @jsotolaВы не настраиваете все светодиоды на ВЫХОД, поэтому один питается от внутреннего подтягивающего резистора., @Majenko
Спасибо всем за ваши полезные предложения. Я исправил ошибки, а также потратил некоторое время на написание кода с массивами, и теперь я могу синхронизировать свои 30 светодиодов с одинаковой яркостью в последовательности. Теперь перейдем к следующей задаче... управлять ими с помощью двух кнопок! :), @Genma