![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#1
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Наконец-то собрался и купил Arduino Uno и к нему разных шилдов
![]() Теперь можно всласть напаяться и напрограммироваться ( естественно под ALT Linux ) Кому интересно пишем в эту тему. Несколько полезных ссылок : Для начала : http://arduino.ru./ http://f1p.ucoz.ru/publ/9-1-0-34 Простой примерчик : http://www.freeduino.ru/arduino/sample_PhysicalPixel.html - проверил , работает при помощи встроенного в программу arduino монитора порта: ![]() Паяльник как всегда рулит : http://cxem.net/arduino/arduino.php PS Все это безобразие напоминает мне старые добрые времена ![]() Сообщение отредактировал kostyalamer - 11.4.2014, 20:15 |
|
|
![]() |
![]()
Сообщение
#2
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Продолжаю тему про Arduino, теперь устройство немного посложнее - регулятор температуры / влажности , кроме Arduino Uno были использованы :
релюхи - http://fixled.ru/shields/4relay-shield.html экранчик - http://fixled.ru/microcontrollers/modules/serial-lcd.html датчик - http://fixled.ru/sensors/dht22.html потенциометры для задания температуры и влажности свои из старого хлама. ссылки привел специально, там можно скачать соответствующие этим устройствам библиотеки Код : Код // регулятор температуры и влажности #include "DHT.h" #include <Wire.h> #include "rgb_lcd.h" int ledT = 13; // выход регулятора температуры int ledH = 12; // выход регулятора влажности int sensorPinT = A1; // вход установки температуры int sensorPinH = A0; // вход установки влажности int sensorValueT = 0; // показания датчика температуры int sensorValueH = 0; // показания датчика влажности int scaleT = 10; // масштабатор уставки температуры int scaleH = 10; // масштабатор уставки влажности int deltaT = 2; // дельта между включением и выключением регулятора по T int deltaH = 2; // дельта между включением и выключением регулятора по H rgb_lcd lcd; const int colorR = 0; // цвета подсветки дисплея const int colorG = 0; const int colorB = 150; unsigned int RelayPin[]={4,6,5,7}; #define DHTPIN 2 // what pin we're connected to // Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // Connect pin 2 of the sensor to whatever your DHTPIN is ( pin 2) // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor DHT dht(DHTPIN, DHTTYPE); void setup() { int i=0; for(i=0;i<4;i++) pinMode(RelayPin[i],OUTPUT); // релейные входы 1-4 pinMode(ledT, OUTPUT); // выход регулятора температуры pinMode(ledH, OUTPUT); // выход регулятора влажности lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); lcd.print("Regulator!"); delay(1000); dht.begin(); } void loop() { // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); float t = dht.readTemperature(); sensorValueT = analogRead(sensorPinT)/scaleT; if ( sensorValueT > 100 ) sensorValueT = 100; // макс. значение уставки T sensorValueH = analogRead(sensorPinH)/scaleH; if ( sensorValueH > 100 ) sensorValueH = 100; // макс. значение уставки F // проверка на ошибочные значения модуля DHT if (isnan(t) || isnan(h)) { lcd.print("Failed to DHT"); } else { // блок отображения информации // температура lcd.setCursor(0, 0); lcd.print("T: "); lcd.setCursor(3, 0); lcd.print(" "); lcd.setCursor(3, 0); lcd.print(t); lcd.print(" C"); lcd.setCursor(11, 0); lcd.print(" "); lcd.setCursor(11, 0); lcd.print(sensorValueT); // влажность lcd.setCursor(0, 1); lcd.print("H: "); lcd.setCursor(3, 1); lcd.print(" "); lcd.setCursor(3, 1); lcd.print(h); lcd.print(" %"); lcd.setCursor(11, 1); lcd.print(" "); lcd.setCursor(11, 1); lcd.print(sensorValueH); // блок регуляторов температуры и влажности if ( t < sensorValueT - deltaT/2) { digitalWrite( ledT, HIGH ); digitalWrite(RelayPin[1],HIGH); } else if ( t > sensorValueT + deltaT/2) { digitalWrite( ledT, LOW ); digitalWrite(RelayPin[1],LOW); } if ( h < sensorValueH - deltaH/2) { digitalWrite( ledH, HIGH ); digitalWrite(RelayPin[2],HIGH); } else if ( h > sensorValueH + deltaH/2) { digitalWrite( ledH, LOW ); digitalWrite(RelayPin[2],LOW); } delay (200); } } А вот как вся эта радость выглядит, слева на экране фактическая температура и влажность, справа заданная потенциометрами, релюшки как и положено щелкают ![]() ![]() |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.6.2025, 14:27 |