10 заметок с тегом

LED

Ctrl + ↑ Позднее

Пульт управления космическим кораблем

21 февраля 2013, 15:19

Настала пора серьезных поделок. Сегодня мы делаем пульт управления космическим кораблем (маленькую его часть) — кнопку для запуска гипердрайва.

Идея такая: 

  • о готовности прибора к работе сигнализирует горящий зеленый светодиод;
  • при нажатии на кнопку, зеленый диод гаснет;
  • два красных диода начинаю по очереди мигать, сигнализируя о запуске того самого гипердрайва;
  • после запуска прибор снова возвращается в состояние готовности.

Сначала рисуем схему:

Затем собираем на макетной плате:

Пишем программу:

В этом примере мы впервые работает с сенсорами. Сенсор в нашем случае — это кнопка, на нажатие которой, надо реагировать.

Вот текст программы:

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 (продолжение)

20 февраля 2013, 11:03

Продолжаем упражняться со светодиодами. По большей части для закрепления и протокола. Теперь моргаем двумя по очереди.

Схема:

Программа:

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

19 февраля 2013, 18:41

Самые первые простые программы на 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);
  }
}

Результат её работы:

Ну и первая собранная на макете схема:

Вот так оно моргает: