А именно к микроконтроллерам в лице Arduino
Arduino состоит из микроконтроллера (ATMEGA) с обвязкой, моста USB-COM и светодиода "L".
Микроконтроллер сам по себе содержит в себе много интересного, по умолчанию доступно:
* универсальные цифровые пины ввода/вывода - 14 штук ( 0 - 13 )
* аналоговые пины для чтения через АЦП - 6 штук ( 0 - 5 )
* два пина, которые могут быть источником прерываний ( 2 и 3 )
* таймер, который отсчитывает число миллисекунд, прошедших с момента старта.
Если подключить некоторое количество библиотек, можно также получить доступ к таким ресурсам:
* энергонезависимая память (EEPROM) и память программ (FLASH);
* таймеры;
* последовательный порт (UART);
* двупроводная шина, совместимая с I2C.
Программа пишется из собственной среды Arduino на языке высокого уровня (СИ) и программируется одной кнопкой UPLOAD по USB кабелю. ВСЁ!!! Никаких Вам программаторов и прочей непонятной и дорогостоящей хрени. Все просто как дважды два :-)
Моя программа к дисплею и соединение выводов, так как та, что в примере почему то не заработала......
#include <LiquidCrystal.h>
// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal g_lcd(12, 11, 10, 5, 4, 3, 2);
const int numRows = 2;
const int numCols = 16;
void setup() //сетап - запускается один раз, после включения или после ресета
{
g_lcd.begin(numRows, numCols);//
g_lcd.clear(); // Start with a blank screen
g_lcd.setCursor(0, 0); // Курсор в начало первой строки
g_lcd.print("Ozernoy P.I. 2010"); // Выводим текст
g_lcd.setCursor(0, 1); // Курсор в начало второй строки
g_lcd.print("Hello word!"); // Выводим текст
}
void loop()
{
// тут пусто
}
ps: ОБЯЗАТЕЛЬНО ПОДАТЬ НАПРЯЖЕНИЕ на VO (питание сегментов, пин 3 дисплея). Я взял потенциометр 20К, включил его между GND и 5V, а среднюю точку подключил к VO. Далее вращая в разные стороны отверткой ползунок, находим положение при котором дисплей показвыает символы.
Часть-2
Данное замечательное устройство имеет 6 АЦП. Благодаря наличию АЦП можно сделать, например цифровой вольтметр.
#include <LiquidCrystal.h>
// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal g_lcd(12, 11, 10, 5, 4, 3, 2);
const int numRows = 2;
const int numCols = 16;
void setup()//Сетап выполняется один раз после включения/ресета
{
g_lcd.begin(numRows, numCols);// Инициализация дисплея
g_lcd.clear(); // Start with a blank screen
g_lcd.setCursor(0, 0); // курсор на первую строку (верхнюю) и на начало строки
g_lcd.print("Digital volmeter"); // Пишем в первую строчку надпись "Digital volmeter"
}
void loop()
{
g_lcd.setCursor(0, 1); // Курсор
float voltage = 5000.0 / 1024.0 * analogRead(0);//Читаем с АЦП № 0 и пересчитываем в мВ
g_lcd.print(voltage); // выводим на экран значение мВ
g_lcd.setCursor(6, 1); g_lcd.print("mV"); //добавляем надпись "mV"
delay(100); //делаем задержку 100 mS что бы цифры не скакали как угорелые :)))
}
Данный вольтметр измеряет напряжение от 0 до 5 Вольт.
Практическое применение - поскольку у нас в распоряжение аж 6 АЦП, то мы можем измерять независимо напряжение например на двух входах, и применить данную возможность для создания цифрового измерителя КСВ.
Простейший цифровой измеритель КСВ:
Собираем простой мостовой КСВ метр
КСВ вычисляется по общеизвестной формуле
Изменяем Нашу программу вольтметра на программу вычисления КСВ:
void loop()
{
float voltage1=5000.0 / 1024.0 * analogRead(0);//Измеряем U1 - падающая волна
float voltage2=5000.0 / 1024.0 * analogRead(1);//Измеряем U2 - отраженная волна
float SWR=(1+voltage2/voltage1)/(1-voltage2/voltage1); //Вычисляем КСВ
g_lcd.setCursor(0, 1); // Курсор
g_lcd.print(SWR); // выводим на экран значение КСВ
g_lcd.setCursor(6, 1); g_lcd.print("SWR"); //добавляем надпись "SWR"
delay(100); //делаем задержку 100 mS что бы цифры не скакали как угорелые :)))
}
|