четверг, 3 мая 2018 г.

15.03.2018 Схемотехника

Схемотехника с Arduino (индивидуальная самостоятельная работа)

    Tinkercad  был создан в 2011 году, его авторы — Кай Бекман (Kai Backman) и Микко Мононен (Mikko Mononen). 
   В 2013 году сервис был куплен компанией Autodesk и дополнила семейство продуктов 123D. 
   В июне 2017 г. Autodesk решил перенести часть функционала другого своего сервиса Electroinics Lab Circuits.io, после чего Tinkercad получил крайне важные и мощные инструменты, способные существенно облегчить начинающим разработчикам Arduino процессы обучения, проектирования и программирования новых схем.

Этап 2. Мини-проект "Радуга"

- изучение информации по ссылке;

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


Часть 1: собрать схему с RGB-светодиодом и запрограммировать переключение семи цветов радуги в его работе.
Необходимые детали:
  • плата Arduino Uno ;
  • беспаечная макетная плата Breadboard small;
  • 3 резистора на 220 Ом; 
  • 1 RGB-светодиод;
  • соединительные провода "папа-папа".



Код:
#define red_led 11

#define blue_led 10

#define green_led 9
void setup()
{
pinMode (red_led, OUTPUT);
  pinMode (blue_led, OUTPUT);
  pinMode (green_led, OUTPUT);
}
void loop ()
{
analogWrite (red_led, 255);
analogWrite (blue_led, 0);
analogWrite (green_led, 0);//красный
delay (1000);
 analogWrite (red_led, 200);
  analogWrite (blue_led, 0);
  analogWrite (green_led, 55); 
  delay (1000);//оранжевый
  analogWrite (red_led, 255);
  analogWrite (blue_led, 0);
  analogWrite (green_led, 255);
  delay (1000);//желтый
  analogWrite (red_led, 0);
  analogWrite (blue_led, 0);
  analogWrite (green_led, 255); 
  delay (1000);//зеленый
  analogWrite (red_led, 0);
  analogWrite (blue_led, 255);
  analogWrite (green_led, 255);
  delay (1000);//голубой
  analogWrite (red_led, 0);
  analogWrite (blue_led, 255);
  analogWrite (green_led, 0); 
  delay (1000);//синий
  analogWrite (red_led, 120);
  analogWrite (blue_led, 255);
  analogWrite (green_led, 0);
  delay (1000);//фиолетовый
}
Часть 2: добавить на схему еще один RGB-светодиод и запрограммировать работу всех светодиодов таким образом, чтобы они работали одновременно, но смена цветов шла с разницей в два цвета.

Необходимые детали:

  • плата Arduino Uno;
  • беспаечная макетная плата Breadboard small;
  • 6 резисторов на 220 Ом;
  • 2 RGB-светодиода;
  • соединительные провода "папа-папа".

        Код:
        #define red_led 11
        #define blue_led 10

        #define green_led 9

        #define red_led1 6

        #define blue_led1 5

        #define green_led1 3

        void setup ()
        {
          pinMode (red_led,OUTPUT);
          pinMode (blue_led,OUTPUT);
          pinMode (green_led,OUTPUT);
          pinMode (red_led1,OUTPUT);
          pinMode (blue_led1,OUTPUT);
          pinMode (green_led1,OUTPUT);
        }
        void loop ()
        {
         analogWrite (red_led,255);
         analogWrite (blue_led,0);
         analogWrite (green_led,0); //красный
         delay(1000);
         analogWrite (red_led1,0);
         analogWrite (blue_led1,255);
         analogWrite (green_led1,0); //синий
         delay(1000);
         analogWrite (red_led,255);
         analogWrite (blue_led,0);
         analogWrite (green_led,55);//оранжевый
         delay(1000);
         analogWrite (red_led1,120);
         analogWrite (blue_led1,255);
         analogWrite (green_led1,0); //фиолетовый
         delay(1000);
         analogWrite (red_led,255);
         analogWrite (blue_led,0);
         analogWrite (green_led,255); //желтый
         delay(1000);
         analogWrite (red_led1,255);
         analogWrite (blue_led1,0);
         analogWrite (green_led1,0); //красный
         delay(1000);
          analogWrite (red_led,0);
         analogWrite (blue_led,0);
         analogWrite (green_led,255); //зеленый
         delay(1000);
         analogWrite (red_led1,200);
         analogWrite (blue_led1,0);
         analogWrite (green_led1,55); //оранжевый
         delay(1000);
          analogWrite (red_led,0);
         analogWrite (blue_led,255);
         analogWrite (green_led,55); //голубой
         delay(1000);
         analogWrite (red_led1,255);
         analogWrite (blue_led1,0);
         analogWrite (green_led1,255); //желтый
         delay(1000);
          analogWrite (red_led,0);
         analogWrite (blue_led,255);
         analogWrite (green_led,0); //синий
         delay(1000);
         analogWrite (red_led1,0);
         analogWrite (blue_led1,0);
         analogWrite (green_led1,255); //зеленый
         delay(1000);
          analogWrite (red_led,255);
         analogWrite (blue_led,255);
         analogWrite (green_led,0); //фиолетовый
         delay(1000);
            analogWrite (red_led1, 0);
          analogWrite (blue_led1, 255);
          analogWrite (green_led1, 255);  //голубой
          delay (1000);
        }

        Этап 3. Мини-проект "НЕ Умный светильник"
        - изучение информации по ссылке;
        -собрать схему "НЕ Умный светильник" по предложенной инструкции в теоретическом материале; изменить код программы таким образом, чтобы при ярком свете светодиод горел ровно, при среднем освещении - мигал, в темноте - не горел.

         Часть 1: собрать схему "НЕ Умный светильник" по предложенной инструкции в теоретическом материале; 


        Необходимые детали:
        • плата Arduino Uno; 
        • беспаечная макетная плата Breadboard small; 
        • 1 резистор на 10 кОм; 
        • 1 резистор на 220 Ом; 
        • 1 светодиод; 
        • 1 фоторезистор; 
        • соединительные провода "папа-папа".
        Часть 2:  изменить код программы таким образом, чтобы при ярком свете светодиод горел ровно, при среднем освещении - мигал, в темноте - не горел.

        Код:
        #define LED_PIN  13//даём портам новые имена, чтобы
        #define LDR_PIN  A0//не запоминать их номера

        void setup()
        {                                            //говорим микроконтроллеру, что
          pinMode(LED_PIN, OUTPUT);//порт LED_PIN, работает в режиме
        }                                            //вывода сигнала

        void loop()
        {
          int val;//задаём целочисленную переменную
          val=analogRead(LDR_PIN);//записываем в переменную значение
                                                 // с порта LDR_PIN
            if(val<70)//проверяем условие
          {
            digitalWrite(LED_PIN,HIGH);//подаем сигнал HIGH на LED_PIN,
          }                                           //если условие выполняется
          else if (val>256)
          {
            digitalWrite(LED_PIN,LOW);//иначе подаем сигнал LOW
          }
          else
          {
            
            digitalWrite(13, HIGH);
          // задерживаем (англ. «delay») микроконтроллер в этом
          // состоянии на 100 миллисекунд
          delay(100);
          // подаём на пин 13 «низкий сигнал» (англ. «low»), т.е.
          // выдаём 0 вольт или, точнее, приравниваем пин 13 к земле.
          // В результате светодиод погаснет
          digitalWrite(13, LOW);
          // замираем в этом состоянии на 900 миллисекунд
          delay(900);
          }
        }

        Этап 4. "Разработка мини-проекта для учеников"

        - изучение информации по ссылке;
        - придумать мини-проект для учащихся и оформить его по следующей схеме:
        1. Теоретический материал
        Необходимые детали:

        • Плата Arduino Uno;
        • Макетная плата;
        • 11 светодиодов;
        • 11 резисторов на 220 Ом;
        • Светодиодная шкала;
        • Провода "папа-папа"
        Код:
        byte i;           // задаем переменную для цифровых выходов
        byte LedMax = 13; // максимальное количество выходов (диодов)
        
        void setup()
        {
        // задаем пины со 2 по 13, как выходы (OUTPUT)
        for(i=2; i<LedMax; i++) { pinMode(i, OUTPUT); }
        }
        
        void loop()
        {
        // последовательно зажигаем светодиоды с 2 по 13 выход
        for(i=2; i<LedMax; i++)
        {
        digitalWrite(i, HIGH);
        delay(100);
        }
        
        delay(1000); // ставим паузу в 1 секунду
        
        // последовательно гасим светодиоды с 13 по 2 выход
        for(i=LedMax; i>2; i--)
        {
        digitalWrite(i, LOW);
        delay(100);
        }
        
        delay(1000); // ставим паузу в 1 секунду
        }

        Пояснения к коду:

        1. Цикл for повторяется до тех пор, пока верно условие i>2 или i<LedMax;
        2. Переменная типа byte может хранить 8-битное беззнаковое число от 0 до 255.

        На что обратить внимание:

        1. Цикл loop в скетче содержит в себе два мини-цикла for, работающих попеременно;
        2. Конструкция цикла for должна располагаться между фигурными скобками { }.
        2.Скринкаст по сборке первоначальной схемы

        3.Подготовка задания практического характера:
        1. Измените скорость последовательного включения и выключения светодиодов.
        2. Замените цифровой выход «2» в скетче на переменную LedMin