10 трав. 2014 р.

Tosduino UNO R3, LCD, Servo, Sonar HC-SR04


Всем доброго дня.
Представляю вашему вниманию, свои первые наработки и тесты платы Arduino. С примером кода.



В этом проекте я использовал:

Макетная планка - SYB 46


Аналог Arduino UNO - Tinyos UNO
Ультразвуковой датчик - HC-SR04
Серво-моторчик SG90
Дисплей - RC1602A-GHY-CSX
Потенциометр - B5K

Происходит следующее.

Датчик расстояния замеряет расстояние и выводит информацию на дисплей, и в зависимости от расстояния (от 3 см до 60 см) крутит серво моторчик.  
Потенциометр служит в качестве настройки контраста дисплея. 

Также код лежит и на GitHub GitHub

Вот исходник кода программы для этого проекта.

#include
#include

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // к каким портам подключен дисплейUltrasonic ultrasonic(8,13); // порты подключения сонара

int servoPin = 7; // порт подключения серво моторчикаint myAngle; // ременная для мотора
int pulseWidth;

void setup() 
{
  lcd.begin(16, 2); // определение дисплея как 16 символьный 2-х строчный
  lcd.print("Testing ..."); // выводим первое слово
  delay(1000); // ждем
  pinMode (servoPin, OUTPUT); // задаем порт мотора как выход
}

void servoPulse(int servoPin, int myAngle) // функция для сервы
{ 
  pulseWidth = (myAngle * 10) + 400;
  digitalWrite(servoPin, HIGH);  
  delayMicroseconds(pulseWidth);  
  digitalWrite(servoPin, LOW);
}

void loop()
{
  int rast = ultrasonic.Ranging(CM); // переменная для расстояния    
  
  rast = map (rast, 5,60, 15, 215 ); // преобразование переменной расстояния в       понятное значение для мотора.  

  servoPulse(servoPin, rast); // обращаемся к функции сервы      
  
  lcd.clear(); // очищаем дисплей  
  lcd.setCursor(0, 0); // ставим курсор на первый символ первой строки (первая     это 0)  
  lcd.print(ultrasonic.Ranging(CM)); // выводим данные с сонара на дисплей          lcd.print("cm"); // и дописываем в конце единицу измерения  
  lcd.begin(16, 2); // объявляем исплей, 16 символьный , 2 строчный
  lcd.print("Testing ..."); // выводим стартовое сообщение
  
  delay(10); // ждем 10 милисекунд
}
Схему подключения на даный момент еще не нарисовал. 

Оказывается все достаточно просто. Будут вопросы пишите, постараюсь ответить на все возможные вопросы.

Немає коментарів:

Дописати коментар