Мар 172013
Почти первая программа для Arduino — своеобразный «Hello, world!». Для того, чтоб понять как работает Arduino в большинстве туториалов предлагают поморгать лампочкой, но это совсем просто и я, поморгав диодом на 13 контакте, пошел дальше.
Вот что будет происходить.
Собственно, простейшее управление устройствами происходит через подачу напряжения на один контактов I/O Arduino. Также ардуино может считывать значения с контактов.
Начну с описания электронной схемы.
Теперь переходим к программе. IDE Arduino
Архив с программой тут
// red green blue led control // compblog.vlukyanov.com //Объявляем переменные. int pinR = 9; // RED Контакты для управления цветами светодиода int pinB = 10; // GREEN int pinG = 11; // BLUE int pin13 = 13; // Для управления контактом 13, чтоб погасить светодиод на плате. int buttonR = 7; // Для считывания значений с кнопок. int buttonG = 6; int buttonB = 5; // Этот раздел переменных используется для корректного получения значений с кнопок. // RED boolean lastbuttonR = LOW; // последнее значение кнопки boolean currentbuttonR = LOW; // текущее значение кнопки int ledonR = 0; // яркость светодиода //GREEN boolean lastbuttonG = LOW; boolean currentbuttonG = LOW; int ledonG = 0; //BLUE boolean lastbuttonB = LOW; boolean currentbuttonB = LOW; int ledonB = 0; // Функция Setup выполняется Ардуино только один раз при включении. // данная функция используется для установки параметров микроконтрллера. void setup() { //pinMode установка параметров контактов I/O // OUTPUT - выход. // INPUT - вход. pinMode(pin13, OUTPUT); pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT); pinMode(buttonR, INPUT); pinMode(buttonG, INPUT); pinMode(buttonB, INPUT); digitalWrite(pin13, LOW); // установка 13 контакта в 0. Светодиод на 13 контакте гаснет. По-умолчанию он горит. } // Булевая функция для определения состояний кнопок. // Кнопка красного цвета boolean debounceR(boolean last) // Переменная last принимает значение, переданное функции { boolean current = digitalRead(buttonR); // Объявляем переменную current и считываем в нее значение кнопки if (last != current) // Если текущее значение кнопки отличается от переданной в функцию ( != - не равно ) { delay(5); // тогда ждем 5 милисекунд. Это необходимо чтоб избавиться от колебаний напряжения поступающих с кнопки и получить точное значение. current = digitalRead(buttonR); // повторно считвыаем значение с кнопки. Уже без шумов. } return current; // Возвращаем значение полученное логическое значение. // last и current доступны только в пределах данной функции. } // Кнопка зеленого цвета boolean debounceG(boolean last) { boolean current = digitalRead(buttonG); if (last != current) { delay(5); current = digitalRead(buttonG); } return current; } // Кнопка синего цвета boolean debounceB(boolean last) { boolean current = digitalRead(buttonB); if (last != current) { delay(5); current = digitalRead(buttonB); } return current; } // Бесконечный цикл, повоторяющийся на микроконтроллере, пока он включен. void loop() { // Управление красным цветом светодиода. currentbuttonR = debounceR(lastbuttonR); // проферяеям при помощи функции debounceR состояние кнопки. if (lastbuttonR == LOW && currentbuttonR == HIGH ) // Если предыдущее значение было ноль, а текущее единица. { ledonR = ledonR + 51 ; // Тогда увеличиваем яркость светодиода на 51 if ( ledonR > 255) ledonR=0; // Если значении становится больше 255, то гасим светодиод } lastbuttonR = currentbuttonR; // Запоминамем текущее состояние кнопки analogWrite(pinR, ledonR); // Передаем измененное значение яркости на вывод Ардуино. // Управление зеленым цветом светодиода. currentbuttonG = debounceG(lastbuttonG); if (lastbuttonG == LOW && currentbuttonG == HIGH ) { ledonG = ledonG + 51 ; if ( ledonG > 255) ledonG=0; } lastbuttonG = currentbuttonG; analogWrite(pinG, ledonG); // Управление синим цветом светодиода. currentbuttonB = debounceB(lastbuttonB); if (lastbuttonB == LOW && currentbuttonB == HIGH ) { ledonB = ledonB + 51 ; if ( ledonB > 255) ledonB=0; } lastbuttonB = currentbuttonB; analogWrite(pinB, ledonB); }
Помогите пожалуйста, дали задание и я застрял на нем: » Измените схему и программу так, чтобы цвета RGB-светодиода управ-
лялись шестью кнопками с независимым плавным управлением яркостью ком-
понент.»