СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до 22.06.2025

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методическая разработка "Работа с платформой Arduino в среде Tinkercad"

Категория: Информатика

Нажмите, чтобы узнать подробности

В данной методической разработке собраны примеры работы с одними из основных модулей для платформы Arduino в среде Tinkercad. Данный сервис может использоваться в периоды дистанционного обучения, что позволяет не отрываться от учебного процесса и одновременно получать практические навыки по программированию и сборке цепей навыки при отсутсвии реальных модулей и плат.

Просмотр содержимого документа
«Методическая разработка "Работа с платформой Arduino в среде Tinkercad"»

Работа с платформой Arduino в среде Tinkercad

В ходе неблагоприятной эпидемической обстановки проведение занятий по робототехнике в очном формате становится не всегда возможным, а личных наборов у учащихся обычно не бывает. Для объединений дополнительного образования занимающимся робототехникой на основе платформы Arduino, 3D-моделирования на помощь приходит онлайн сервис Tinkercad. Данный сервис позволяет учащимся и педагогам не только удобно собирать схемы и производить проверку работ, написанного учащимся кода, но и собирать простенькие объемный модели на основе заранее подготовленных разработчиками блоков. Работа в сервисе разделена по классам, а параллельно возможна работа с учащимися в Zoom. Таким образом, дети смогут как посмотреть сборку, так и ее повторить самостоятельно без лишних усилий и материальных затрат.

Однако работа в данном сервисе имеет некоторые особенности: не хватает распространенных библиотек, различие в подключении модулей и другие. В данном методическом материале рассмотрим подключение основных модулей и их программирование в среде Tinkercad.

Содержание

Светодиоды 2

RGB светодиоды 3

Потенциометры 4

Кнопка 5

Датчик температуры 7

Сервопривод 8

Жидкокристаллический дисплей 9

Ультразвуковой датчик 11

Пьезодинамик 12

Фоторезистор 13

7-сегментный индикатор 14

Твердотельное реле 16

PIR датчик 17



Светодиоды

Светодиоды представляют собой полупроводниковый прибор, излучающий свет при прохождении по нему электрического тока. Светодиоды предназначены для световой индикации, часто используются в проектах. При подключении светодиодов от питания 5 В важно использовать резистор на 280 Ом во избежание выхода светодиодов.


void setup() {

pinMode(2, OUTPUT); // цифровой пин

}


void loop() {

digitalWrite(2, HIGH); // HIGH = 1, для цифровых пинов

digitalWrite(2, LOW); // LOW = 0, для цифровых пинов

analogWrite(3, 255); // пин с ШИМ, значения от 0 до 255

}



RGB светодиоды

RBG (R – red – красный, G – green – зеленый, B – blue – синий) светодиоды представляют собой такой же полупроводниковый прибор, созданный для световой индикации, однако в отличие от обычного светодиода он способен излучать несколько цветов одновременно, создавая из их сочетаний новые цвета. В его основе лежит три цвета: красный, зеленый, синий. Программирование происходит так же, как и в обычном светодиоде, однако для каждого цвета (пина) нужно писать отдельные команды.


void setup()

{

pinMode(9, OUTPUT); // зеленый

pinMode(10, OUTPUT); // синий

pinMode(11, OUTPUT); // красный

}


void loop() // попробуем задать болотный цвет при помощи ШИМ

{

analogWrite(11, 172); // красный цвет получает значение 172

analogWrite(9, 183); // зеленый цвет получает значение 183

analogWrite(10, 142); // синий цвет получает значение 142

}

Потенциометры

Потенциометр (переменный резистор) представляет собой компонент, при вращении ручки которого изменяются характеристики электрического тока в цепи, ограничиваются подобно резисторам. Потенциометры используются часто не только в робототехнике, но и в повседневной жизни - для настройки громкости музыки, регулировки яркостью света (диммеры) и т.д.

Потенциометры подключаются в аналоговые пины (A0-A5), передают значения от 0 до 1023.


void setup() {

pinMode(A0, INPUT); // подключение пина потенциометра (A0), как вход

}


void loop() {

potent = analogRead(A0); // чтение значения с потенциометра

potent = map(potent, 0, 1023, 0, 255); // преобразуем значения переменной

// принимаются значения от 0 до 1023, преобразуются в значения 0-255

// далее potent можно передавать, например, для яркости светодиода

}


Кнопка

Кнопка является классическим электронным компонентом, который мы используем каждый день, даже в наших гаджетах, для совершения какого-либо действия, выбора. Работа кнопки происходит при замыкании контактов при нажатии на нее. Рассмотрим несколько программ работы кнопки.

Работа при зажатии кнопки:


void setup()

{

pinMode(2, INPUT);

}


void loop() {

boolean button = digitalRead(2);

if (button == 1){ // пока нажата - работает

команда (например, горит светодиод или вращается двигатель);

}

if (button == 0){ // не нажата, не работает

команда (например, гаснет светодиод или перестает вращаться двигатель);

}

}



Первое нажатие на кнопку включает устройство, второе – отключает:


int k = 0; // создаем счетчик нажатий

void setup()

{

pinMode(2, INPUT);

}


void loop()

{

boolean button = digitalRead(2);

if (button == 1){

k=k+1; // счетчик нажатий

delay(200);

}

if (k % 2 == 1){ // если остаток приделении k на 2 = 1 - первое нажатие

команда нужная при нажатии (обычно включение чего-либо);

}

if (k % 2 == 0){ // если остаток при делении k на 2 = 0 - второе нажатие

команда нужная при нажатии (обычно выключение чего-либо);

}

}


Датчик температуры

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


void setup()

{

pinMode(A1, INPUT); // объявление аналогового пина датчика, как вход

}


void loop() {

float reading = analogRead(A1); // считали напряжение в переменную

float voltage = reading * 5 / 1024; // для получения напряжения, значение

// полученное с пина умножаем на напряжение питания и делим на 1024

float temp = (voltage - 0.5) * 100; // конечная температура

}


Сервопривод

Сервопривод – механический привод, способный осуществлять вращение вала на заданный угол, а также передавать значение, в котором находится. Угол поворота сервопривода может быть задан через цифровой пин в значении от 0 до 180.


#include Servo.h // вызов библиотеки сервопривода

Servo servo1; // инициализация сервы с именем servo1


void setup()

{

servo1.attach(2); // объявление servo1 пина сервопривода

}


void loop()

{

servo1.write(угол); // поворот на угол, от 0 до 180, задается в виде числа

int x = servo1.read(); // чтение угла поворота сервопривода (где он сейчас находится)

}


Жидкокристаллический дисплей

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

Существует несколько видов жидкокристаллических дисплеев: 1602, 2002,2004, где первые две цифры – количество символов в строке, а вторые две – количество строк. Кроме того, дисплеи могут различаться наличием и отсутствием подсветки, ее цветом, а так же интерфейсом подключения.

Подключение дисплея происходит при помощи 16 контактов:

  1. GDN - “-” питания;

  2. VCC - “+” питания 5V;

  3. V0 - через потенциометр контрастность;

  4. RS - 12 пин;

  5. RW - “-” питания;

  6. E - 11 пин;

  7. DB4 - 5 пин;

  8. DB5 - 6 пин;

  9. DB6 - 7 пин;

  10. DB7 - 8 пин;

  11. LED - “+” питания через резистор (280 Ом);

  12. LED - “-” питания.






#include LiquidCrystal.h // подключение библиотеки для работы с дисплеем

// LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7); // пример объявления пинов по очереди

LiquidCrystal lcd(12,11,5,4,3,2); // объявление пинов по очереди


void setup()

{

}


void loop()

{

lcd.setCursor(0,0); //установка курсора на 1 ячейку, 1 строки (ячейка, строка). Отсчет с 0!

lcd.print(x1); // печать переменной

lcd.print('Hello'); // печать строки (идет после предыдущей печати на след ячейке)

lcd.print(76); // печать числа

lcd.clear() // отчистить экран (удалить всё, что есть на экране)

}



byte simvol[8] = { // массив для создания символа типа char для экрана

0b01100,

0b10010,

0b10010,

0b01100,

0b00000,

0b00000,

0b00000,

0b00000,

0b00000

};

lcd.createChar(1, simvol); // объявление символа


home() – ставит курсор в начало экрана;

clear() – ставит курсор в начало экрана, стирая всё, что на нем было;

display(), noDisplay() – влючает/выключает дисплей;

cursor(), noCursor() – показать/скрыть курсор;

cursor() и noCursor() – если курсор был включен прошлой командой, то он будет мигать;

scrollDisplayLeft(), scrollDisplayRight() – позволяет прокручивать экран на один знак влево/вправо;

createChar(ch, bitmap) – создает символ с кодом ch (0 – 7), используя массив битовых масок.

leftToRight(), rightToLeft() – вывод теста слева на право и справа на лево.


Ультразвуковой датчик

Ультразвуковые датчики предназначены для определения расстояния путем передачи и приема отраженного ультразвукового сигнала. Эта разница во времени путем умножения на скорость распространения в среде и делением на 2 из-за двойного пути преобразуется в расстояние.


int trigPin = 6; // пин триггера – передача ультразвукового сигнала

int echoPin = 7; // эхо – прием сигнала

long duration, dist; // переменные времени, расстояния


void setup() {

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

}


void loop()

{

digitalWrite(trigPin, HIGH); // генерируем импульсы в 10 мкс

delayMicroseconds(10);

digitalWrite(trigPin, LOW); // завершаем генерацию


duration = pulseIn(echoPin, HIGH); // принимаем отраженный сигнал, разница между

// передачей и приемом - duration


dist = (duration / 2) / 29; // преобразование времени в расстояние

delay(250);

}


Пьезодинамик

Пьезодинамик представляет собой акустическое устройство, способное воспроизводить звук определенной частоты. Используется для оповещения пользователей. Наиболее известные примеры использования зуммеров – микроволновые печи, будильники.


void setup()

{

pinMode(6, OUTPUT);

}


void loop()

{

tone(6,1000); // включить динамик 6 пина на частоте 1000 Гц

delay(1000); // задержка 1 сек

noTone(6); // отключить динамик 6 пина

delay(1000); // задержка 1 сек

}


Фоторезистор

Фоторезистор — полупроводниковый прибор, изменяющий величину своего сопротивления при облучении светом. На его основе делают устройства, в которых необходимо знать либо уровень освещения (автоматические фонари), либо присутствие света в целом. Пример фонаря:


void setup()

{

pinMode(A0,INPUT); // подключение фоторезистора, как вход

Serial.begin(9600); // подключение серийного порта

}


void loop()

{

int light = analogRead(A0); // чтение значения с фоторезистора, передача его переменной

Serial.println(x); // печать значения в сериный порт

x = map(x, 6, 679, 255, 0); // преобразование значений с фоторезистора в значения 255-0

analogWrite(3, x); // включение светодиода с относительной яркостью, противоположной // окружающему сопротивлению

}


7-сегментный индикатор

7-сегментный индикатор используется для вывода информации, в основном цифр для пользователя. Данные индикаторы отлично подходят для небольших счетчиков. По своей сути, 7-сегментный индикатор является сборкой светодиодов с общим минусом питания (средние пины). Соответственно, как и для светодиодов, для подключения используются резисторы на 280 Ом. Зажечь каждый отдельный сегмент возможно просто подав на него цифровой или аналоговый сигнал на его пин.

// зажжем светодиоды по кругу


int k = 0; // создание счетчика k

void setup()

{

pinMode(1, OUTPUT); // объявление пинов как выходы

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

Serial.begin(9600); // объявление работы серийного порта

}


void loop()

{

for (int i = 1; i i++){ // перебор светодиодов по кругу

digitalWrite(i, HIGH); // зажигаем светодиоды по очереди

delay(500); // задержка между включениями в 500 мс

}





// включение индикаторов по кругу после нажатия на кнопку

int k = 0; // создание счетчика k

void setup()

{

pinMode(1, OUTPUT); // объявление пинов как выходы

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, INPUT);

Serial.begin(9600); // объявление работы серийного порта

}


void loop()

{

boolean button = digitalRead(7); // считывание нажатие на кнопку

if (button == 1) { // если нажата

k++; // в счетчик +1

delay(150);

}

if (k = 7) { // если значение кнопки больше или равно 7

for (int i = 1; i с 1 по 6 пин

digitalWrite(i, LOW); // выключить индикаторы

}

k = 0; // счетчик k приравнять к нулю

}

if (k 0 and k k больше нуля и меньше 7

digitalWrite(k, HIGH); // включить k-тый индикатор

}

Serial.println(k); // вывести значение k в серийный порт

}


Твердотельное реле

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


int k = 0; // создаем счетчик

void setup()

{

pinMode(7, OUTPUT); // пин реле - выход

pinMode(13, INPUT); // пин кнопки - вход

}


void loop()

{

boolean button = digitalRead(13); // чтение значения кнопки

if (button == 1) { // если нажата

k++; // добавляем в счетчик единицу

delay(200); // задержка от дребезга

}

if (k % 2 == 1) { // если значение счетчика нечетное

digitalWrite(7, HIGH); // передаем реле логическую единицу, включаем

}

else if (k % 2 == 0) { // если значение счетчика нечетное

digitalWrite(7, LOW); // передаем реле логический нуль, отключаем

}

}


PIR датчик

PIR датчики используются для обнаружения движения в различных охранных системах или автоматических светильниках, которые включают свет при прохождении человека. Датчик обнаруживает присутствие человека при помощи двух сенсоров температуры. Если температура изменяется в большую сторону одновременно на двух сенсорах в зоне их видимости, то датчик посылает на плату логическую единицу.


void setup()

{

pinMode(1, INPUT); // пин датчика - вход

pinMode(2, OUTPUT); // пин пьезодинамика - выход

}


void loop()

{

boolean pir = digitalRead(1); // чтение состояния с датчика

while (pir == 1){ // пока датчик передает 1 (присутствие)

tone(2,1000); // пищать пьезодинамиком с частотой 1 кГц

delay(80); // в течение 80 мс

tone(2,3000); // пищать пьезодинамиком с частотой 3 кГц

delay(80); // в течение 80 мс

pir = digitalRead(1); // снова проверяем наличие человека

}

if (pir != 1){ // если датчик передает нуль

noTone(2); // выключаем пьезодинамик

}

}





Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!