Лабораторный макет для Arduino

Понадобилось мне создание лабораторного макета, который можно было использовать в учебном процессе. Были предъявлены требования к суперантивандальной защите от студентов и универсальности макета.
Первый прототип макета уже сделан.

Выношу его на суд. Может быть кому-то пригодится идея.

Посмотреть на Яндекс.Фотках


Посмотреть на Яндекс.Фотках

Идея проста — спрятать Arduino, сделать коммутационную панель, добавить элементы для того чтобы можно было выполнить уроки по Arduino с Robocraft.ru

На базе светодиодов релизован эффект бегущих огней для демонстрации возможностей работы студентам.


int timedelay=100;  //задержка между огнями
int cycles=4;      //количество циклов выполнения каждого алгоритма
int lnumber=7;     //количество светодиодов
int i,j;           //переменные циклов
int programsNumber=0;        //флаг подпрограммы


void setup(){

        for (i=0;i<=lnumber;i++)
        {
          //определяем какие порты будут у нас рабочими, к примеру для 8 светодиодов: 0-7 
          pinMode(i,OUTPUT); 
        }
}


void loop(){ // основной цикл работы устройства
      switch (programsNumber)
      {
        case 0:
        {
                          
                //бегущий огонь в прямом направлении
                for (j=1;j<=cycles;j++)
                {//сначала в одну сторону
                      for (i=0;i<=lnumber;i++)
                      {
                            digitalWrite(i,HIGH);//включили лампу
                            delay(timedelay);    //подождали 
                            digitalWrite(i,LOW); //выключили лампу
                      }
                      //потом в другую 
                      for (i=lnumber+1;i>0;i--)
                      {
                            digitalWrite(i-1,HIGH);//включили лампу
                            delay(timedelay);      //подождали 
                            digitalWrite(i-1,LOW); //выключили лампу
                      }
                }
                
               programsNumber++; //переходим к следующему эффекту 
        }
        break;
        
      case 1:
      {
        //случайная лампа 
        
        for (j=0;j<=cycles;j++)
            {
                int rndlamp=random(lnumber+1); //случайный номер светодиода
                digitalWrite(rndlamp,HIGH);    //включили светодиод
                delay(timedelay);              //задержка
                digitalWrite(rndlamp,LOW);     //выключили
            }
        programsNumber++;                      //переходим к следующему эффекту 
        }
        break;
        
        
      case 2:
      {//теперь включаем и выключаем по нарастающей
        
        for (j=1;j<=cycles;j++)
        {
          for (i=0;i<=lnumber;i++)
          {
            digitalWrite(i,HIGH);//включаем лампы
            delay(timedelay);//подождали
          }
          
          for (i=lnumber+1;i>0;i--)
          {
            digitalWrite(i-1,LOW);//выключаем лампы
            delay(timedelay);//подождали
            }
          }
          
        programsNumber=0; //переходим к первому эффекту   
        }
      break;
      }
}
  • +2
  • 30 мая 2010, 00:13
  • vruzh

Комментарии (3)

RSS свернуть / развернуть
+
0
отличная работа!
сразу вспомнилась вот такая мегабрутальная штука:
avatar

noonv

  • 30 мая 2010, 10:18
+
+1
Студенты и такую быстро убьют, особенно, если их 2-3 потока используют макет!
avatar

vruzh

  • 30 мая 2010, 17:36
+
0
только если не закрыть все плексом 10 мм. :)
avatar

Maxsimus

  • 17 мая 2015, 16:00

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.