Arduino: различия между версиями
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
Чтобы понять как это круто, пройдем по шагам как это было до ардуины: | Чтобы понять как это круто, пройдем по шагам как это было до ардуины: | ||
# Вы выбираете микроконтроллер. Читаете к нему документацию в виде книги обычно. | |||
# Вы берете текстолит покрытый медью. Проектируете плату. Вытравливаете по трафарету дорожки, чтобы соединить микроконтроллер и выводы. | |||
# Вы лудите и паяете. | |||
# Вы собираете программатор. | |||
# Пишете код и выбираете нужный компилятор. Компилируете код. | |||
# Прошиваете программатором контроллер. Если все ок - он работает. Если нет - отлаживаете. | |||
# Начинаете как-то пользоваться им. | |||
Теперь: | Теперь: | ||
# У Ардуины встроенный программатор, есть IDE с компилятором и все что вам нужно это просто взять код и сразу ее прошить как вам нужно. | |||
# Соединяете датчики и моторчики - все работает сразу. | |||
# Это интересно и без рутины. | |||
Это интересно и без рутины. | |||
== Как проверить Arduino == | == Как проверить Arduino == |
Версия от 17:15, 11 марта 2017
Что такое Arduino?
Ардуино - это открытая программно-аппаратная платформа для прототипирования.
Чтобы понять как это круто, пройдем по шагам как это было до ардуины:
- Вы выбираете микроконтроллер. Читаете к нему документацию в виде книги обычно.
- Вы берете текстолит покрытый медью. Проектируете плату. Вытравливаете по трафарету дорожки, чтобы соединить микроконтроллер и выводы.
- Вы лудите и паяете.
- Вы собираете программатор.
- Пишете код и выбираете нужный компилятор. Компилируете код.
- Прошиваете программатором контроллер. Если все ок - он работает. Если нет - отлаживаете.
- Начинаете как-то пользоваться им.
Теперь:
- У Ардуины встроенный программатор, есть IDE с компилятором и все что вам нужно это просто взять код и сразу ее прошить как вам нужно.
- Соединяете датчики и моторчики - все работает сразу.
- Это интересно и без рутины.
Как проверить Arduino
Я работаю в Ubuntu Linux. Скачать последнюю версию IDE можно тут [1]. Запустите ./install.sh чтобы установить ярлыки для быстрого запуска.
sudo usermod -a -G dialout <username>
Убедитесь, что группа есть командой
groups
Иначе перелогиньтесь.
Присоедините Ардуину
ls -l /dev/ttyACM*
Должна быть в списке.
командой arduino запустите IDE. В примерах есть Blink.
/* 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 }
Прошейте примером, и встроенный диод замигает, или же присоедините диод через резистор 200 кОм на землю и 13 пин.
Реле
Примером Blink можно проверить и реле. Питание +5 вольт, земля и сигнал на 13 пин.
Remote Control
С Ардуино кит поставляется пульт дистанционного управления HX1838 и датчик 1838B. К пульту необходимо приобрести батарейку CR2025.
1 - на 11 пин 2 - земля 3 - +5 вольт
Далее качаем либу [2] в zip и ставим ее через IDE (Скетч - Подключить библиотеку - добавить ZIP библиотеку).
ВНИМАНИЕ удалите библиотеку <путь к IDE>/libraries/RobotIRremote т.к. они конфликтуют.
Прошиваем скетчем, открываем Инструменты и монитор порта - смотрим результат.
#include "IRremote.h" int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11 IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' void setup() { Serial.begin(9600); Serial.println("IR Receiver Raw Data + Button Decode Test"); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); translateIR(); irrecv.resume(); } } void translateIR() // Car MP3 IR { switch(results.value) { case 0xFFA25D: Serial.println(" CH- "); break; case 0xFF629D: Serial.println(" CH "); break; case 0xFFE21D: Serial.println(" CH+ "); break; case 0xFF22DD: Serial.println(" PREV "); break; case 0xFF02FD: Serial.println(" NEXT "); break; case 0xFFC23D: Serial.println(" PLAY/PAUSE "); break; case 0xFFE01F: Serial.println(" VOL- "); break; case 0xFFA857: Serial.println(" VOL+ "); break; case 0xFF906F: Serial.println(" EQ "); break; case 0xFF6897: Serial.println(" 0 "); break; case 0xFF9867: Serial.println(" 100+ "); break; case 0xFFB04F: Serial.println(" 200+ "); break; case 0xFF30CF: Serial.println(" 1 "); break; case 0xFF18E7: Serial.println(" 2 "); break; case 0xFF7A85: Serial.println(" 3 "); break; case 0xFF10EF: Serial.println(" 4 "); break; case 0xFF38C7: Serial.println(" 5 "); break; case 0xFF5AA5: Serial.println(" 6 "); break; case 0xFF42BD: Serial.println(" 7 "); break; case 0xFF4AB5: Serial.println(" 8 "); break; case 0xFF52AD: Serial.println(" 9 "); break; default: Serial.println(" other button "); } delay(500); }
Ультразвуковой датчик hc sr04
const int Trig = 8; const int Echo = 9; const int ledPin = 11; // 13 – если будете использовать встроенный в Arduino светодиод void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } unsigned int time_us=0; unsigned int distance_sm=0; void loop() { digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера delayMicroseconds(10); // Удерживаем 10 микросекунд digitalWrite(Trig, LOW); // Затем убираем time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса distance_sm=time_us/58; // Пересчитываем в сантиметры Serial.println(distance_sm); // Выводим на порт if (distance_sm<50) // Если расстояние менее 50 сантиметром { digitalWrite(ledPin, 1); // Зажигаем светодиод } else { digitalWrite(ledPin, 0); // иначе тушим } delay(100); }
Сервопривод
#include <Servo.h> //используем библиотеку для работы с сервоприводом Servo servo; //объявляем переменную servo типа Servo int deg = 0; void setup() //процедура setup { servo.attach(10); //привязываем привод к порту 10 } void loop() //процедура loop { servo.write(deg); //ставим вал под 0 delay(2000); //ждем 2 секунды deg = deg + 10; if (deg > 360) { deg = 0; } }