LED
Пульт управления космическим кораблем
Настала пора серьезных поделок. Сегодня мы делаем пульт управления космическим кораблем (маленькую его часть) — кнопку для запуска гипердрайва.
Идея такая:
- о готовности прибора к работе сигнализирует горящий зеленый светодиод;
- при нажатии на кнопку, зеленый диод гаснет;
- два красных диода начинаю по очереди мигать, сигнализируя о запуске того самого гипердрайва;
- после запуска прибор снова возвращается в состояние готовности.
Сначала рисуем схему:
Затем собираем на макетной плате:
Пишем программу:
В этом примере мы впервые работает с сенсорами. Сенсор в нашем случае — это кнопка, на нажатие которой, надо реагировать.
Вот текст программы:
int swich = 2;//кнопка int green = 4; int red1 = 7; int red2 = 12; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(green, OUTPUT); pinMode(swich, INPUT);//натраиваем сенсор pinMode(red1, OUTPUT); pinMode(red2, OUTPUT); } // the loop routine runs over and over again forever: void loop() { int swichState = 0; swichState = digitalRead(swich);//считываем состояние кнопки if (swichState==LOW){ //если кнопка не нажата digitalWrite(green,HIGH); digitalWrite(red1,LOW); digitalWrite(red2, LOW); } else {//если кнопка нажата for(int i=0;i<=2;i++){ digitalWrite(green,LOW); digitalWrite(red2,HIGH); digitalWrite(red1,LOW); delay(250); digitalWrite(red2, LOW); digitalWrite(red1, HIGH); delay (250); } } }
Пульт в действии:
Первые программы на Arduino (продолжение)
Продолжаем упражняться со светодиодами. По большей части для закрепления и протокола. Теперь моргаем двумя по очереди.
Схема:
Программа:
int led1 = 12; int led2 = 7; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led1, OUTPUT); pinMode(led2,OUTPUT); } // the loop routine runs over and over again forever: void loop() { int i; for(i=0;i<=2;i++) { digitalWrite(led1, HIGH); delay(500); digitalWrite(led1, LOW); delay(500); } for(i=0;i<=2;i++) { digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); delay(1000); } }
Моргает:
А теперь моргаем SOS сразу двумя, схема такая же, немного изменена программа:
int led1 = 12; int led2 = 7; // the setup routine runs once when you press reset: void setup() { pinMode(led1, OUTPUT); pinMode(led2,OUTPUT); } // the loop routine runs over and over again forever: void loop() { int i; for(i=0;i<=2;i++) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); delay(500); digitalWrite(led1, LOW); digitalWrite(led2, LOW); delay(500); } for(i=0;i<=2;i++) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led1, LOW); digitalWrite(led2, LOW); delay(1000); } }
Арсений программирует:
Диоды моргают:
Первые программы на Arduino
Самые первые простые программы на Arduino — поморгать диодом. В IDE для платы есть много примеров программ, в т.ч. и такие простые.
Вот один из примеров:
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Из комментариев к тексту понятно, что программа делает. Даже нет необходимости делать какие либо схемы, диод на пин 13 уже встроен в сам Arduino достаточно только скомпилировать и отправить программу на устройство. Мы с Арсением решили усложнить и заставить диод выдавать сигнал SOS. Получилась такая программа:
int led = 12; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { int i; for(i=0;i<=2;i++) { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for half a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(500); } // wait for a second for(i=0;i<=2;i++) { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); } }
Результат её работы:
Ну и первая собранная на макете схема:
Вот так оно моргает: