Схемотехника с 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);
}
}
#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. "Разработка мини-проекта для учеников"
- изучение информации по ссылке;
- придумать мини-проект для учащихся и оформить его по следующей схеме:
- Теоретический материал
Необходимые детали:
- Плата 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 секунду
}
Пояснения к коду:
- Цикл
for
повторяется до тех пор, пока верно условиеi>2
илиi<LedMax
;- Переменная типа
byte
может хранить 8-битное беззнаковое число от 0 до 255.На что обратить внимание:
- Цикл
loop
в скетче содержит в себе два мини-циклаfor
, работающих попеременно;- Конструкция цикла
for
должна располагаться между фигурными скобками{ }
.
2.Скринкаст по сборке первоначальной схемы
3.Подготовка задания практического характера:
- Измените скорость последовательного включения и выключения светодиодов.
- Замените цифровой выход «2» в скетче на переменную
LedMin