понедельник, 8 марта 2010 г.
Повесил за окно датчик температуры TMP37, так его показания и данные обычного спиртового термометра расходились на 7 градусов... Кому верить - непонятно, однако яндекс показывает температуру, аналогичную датчику. Еще видимо схему не очень хорошо собрал - иногда появляются сильные скачки напряжения с датчика. Устранил их самым простым способом - брал среднее арифметическое двухсот пятидесяти шести показаний =))
воскресенье, 7 марта 2010 г.
Недавно решил попробовать в деле smd компоненты :) В принципе ничего сложного, минимальный необходимый инструмент - пинцет. Зато резко уменьшился размер платы готового устройства.
Сделал "Часы v.2" =)
Использование стабилизатора LM7805 позволило подавать различное питающее напряжение. Точно не помню, но вроде бы максимум 25 или 35 вольт.
Читать дальше......
воскресенье, 22 ноября 2009 г.
Подключение LCD к Arduino.
Дисплей необходимо подключать по следующей схеме:
Её я позаимствовал в блоге http://mk90.blogspot.com/ =)
Также, я подключил переменный резистор, для регулировки контраста дисплея. Крайние выводы резистора подключаем к земле и 5В, а средний к 3 контакту LCD дисплея. Подсветка включается через 15 и 16 контакты, (анод и катод соответственно).
Загружаем в arduino следующую программу:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("Hello, world!");
}
void loop() {
}
Включаем - и все работает :)
Читать дальше......
Контакт дисплея | Контакт Arduino | Значение |
1 | GND | Vss |
2 | 5V | Vdd |
3 | Vo (контрастность) | |
4 | digital 12 | RS |
5 | digital 11 | R/W |
6 | digital 10 | ENABLE |
11 | digital 5 | DB4 |
12 | digital 4 | DB5 |
13 | digital 3 | DB6 |
14 | digital 2 | DB7 |
15 | - | LED+ |
16 | GND | LED- |
Её я позаимствовал в блоге http://mk90.blogspot.com/ =)
Также, я подключил переменный резистор, для регулировки контраста дисплея. Крайние выводы резистора подключаем к земле и 5В, а средний к 3 контакту LCD дисплея. Подсветка включается через 15 и 16 контакты, (анод и катод соответственно).
Загружаем в arduino следующую программу:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("Hello, world!");
}
void loop() {
}
Включаем - и все работает :)
Читать дальше......
воскресенье, 1 ноября 2009 г.
ЖК
Приобрел на днях жидкокристаллический знакосинтезирующий дисплей, производства Winstar. Это WH1602J-YGH-CT, англо-русский, 16х2. Осталось закупить паяльник, припой и т.п. и буду подключать его к Arduino. :) Жаль это будет не так скоро, как хотелось бы...
Читать дальше......
суббота, 31 октября 2009 г.
Переменный резистор

У потенциометра три ноги - крайние подключаем к земле и +5В, а со средней снимаем выходное напряжение - подключим, например, к аналоговому входу 0. В крайнем правом положении на ней будет 0В, а в крайнем левом +5В.
Код программы, загружаемой в Arduino:
#define ANALOG_IN 0 // Порт, к которому подключен переменный резистор
int avalue = 0 // Здесь мы храним данные со второго порта
void setup() {
Serial.begin(9600);
}
void loop() {
avalue = analogRead(ANALOG_IN); // считываем значение с нулевого аналогового порта.
Serial.println(avalue); // отправляем данные на COM порт.
}
Вот и все, теперь нажав на кнопку "Serial monitor" в Arduino IDE мы увидим бегущие цифры, а вращая "крутилку" :))) потенциометра - будем наблюдать за их изменением :)
Это можно использовать, например, для ручного изменения яркости светодиода. Есть два варианта:
1) Подключить анод (плюс, длинная нога) светодиода к средней ноге потенциометра, а катод (минус, короткая нога), через резистор (рассчитывается из характеристик светодиода, но обычно 1кОм хватает ) к земле.
2) Либо не меняя первоначальной схемы, подключить анод к цифровому выходу с ШИМ (PWM) (Широтно-импульсная модуляция) Arduino, а дальше как обычно, через резистор, к земле. ШИМ позволяет получить аналоговый сигнал средствами цифровых портов. На выход будет подаваться напряжение в 5В с определенной частотой. Так, например, для получения напряжения 2,5В надо подавать 5В в два раза реже. Необходимо изменить вышеприведенную программу:
#define ANALOG_IN 0 // Порт, к которому подключен переменный резистор
#define ledPin 11 // Порт, к которому подключен светодиод. (11 порт с PWM )
int avalue = 0; // Здесь мы храним данные с нулевого порта
void setup() {
}
void loop() {
avalue = analogRead(ANALOG_IN); // считываем значение с нулевого порта.
analogWrite(ledPin, avalue/4); // Т.к. указать надо значение 0..255, а приходит 0..1023 - делим на 4.
}
Осциллограф из Arduino
Arduino умеет считывать значения с аналогового порта с помощью analogRead().
Если считывать данные и перенаправлять их на компьютер, а там строить график по полученным данным - получится осциллограф.
#define AINPUT 0 // принимать данные будем на аналоговый порт 0
void setup() {
Serial.begin(57600); //скорость работы с COM портом
}
void loop() {
int avalue;
avalue = analogRead(AINPUT);
Serial.println(avalue);
}
Это код программы, загружаемой в arduino. А теперь получим данные на компьютере и нарисуем график. С этим возникла небольшая проблема - я писал программу в Processing и я его совсем не знаю, так что за код сильно не пинайте - пока это лишь черновик. Но данные принимает, хоть разглядеть можно, а кому надо будет - допишут. Ну или я доделаю :)
import processing.serial.*;
Serial myPort;
int xPos = 0;
float inByte2 = 0;
void setup () {
size(640, 480);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 57600);
myPort.bufferUntil('\n');
background(0);
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
}
void draw () {
}
void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil('\n');
if (inString != null) {
float inByte = float(inString);
inByte = map(inByte, 2048, -2048, 0, height);
stroke(0,255,0);
line(xPos, inByte, xPos, inByte2);
inByte2 = inByte;
if (xPos >= width) {
xPos = 0;
background(0);
}
else {
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
xPos++;
}
}
}
Оно как-то работает... :)) Надо переделать систему рисования графика, добавить сетку, и линию времени. :)
----
Что-то код выводится без отступов, лень уже разбираться, в чем тут дело - спать давно пора. Читать дальше......
Если считывать данные и перенаправлять их на компьютер, а там строить график по полученным данным - получится осциллограф.
#define AINPUT 0 // принимать данные будем на аналоговый порт 0
void setup() {
Serial.begin(57600); //скорость работы с COM портом
}
void loop() {
int avalue;
avalue = analogRead(AINPUT);
Serial.println(avalue);
}
Это код программы, загружаемой в arduino. А теперь получим данные на компьютере и нарисуем график. С этим возникла небольшая проблема - я писал программу в Processing и я его совсем не знаю, так что за код сильно не пинайте - пока это лишь черновик. Но данные принимает, хоть разглядеть можно, а кому надо будет - допишут. Ну или я доделаю :)
import processing.serial.*;
Serial myPort;
int xPos = 0;
float inByte2 = 0;
void setup () {
size(640, 480);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 57600);
myPort.bufferUntil('\n');
background(0);
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
}
void draw () {
}
void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil('\n');
if (inString != null) {
float inByte = float(inString);
inByte = map(inByte, 2048, -2048, 0, height);
stroke(0,255,0);
line(xPos, inByte, xPos, inByte2);
inByte2 = inByte;
if (xPos >= width) {
xPos = 0;
background(0);
}
else {
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
xPos++;
}
}
}
Оно как-то работает... :)) Надо переделать систему рисования графика, добавить сетку, и линию времени. :)
----
Что-то код выводится без отступов, лень уже разбираться, в чем тут дело - спать давно пора. Читать дальше......
вторник, 27 октября 2009 г.
Freeduino 2009
"Аппаратная часть
Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328 и ATmega168 в новых версиях и ATmega8 в старых) и элементной обвязки для программирования и интеграции с другими схемами. На каждой плате обязательно присутствуют линейный стабилизатор напряжения 5 В и 16 МГц кварцевый генератор (в некоторых версиях керамический резонатор). В микроконтроллер предварительно прошит загрузчик, поэтому внешний программатор не нужен.
На концептуальном уровне все платы программируются через RS-232 (последовательное соединение), но реализация этого способа отличается от версии к версии. Плата Serial Arduino содержит простую инвертирующую схему для конвертирования уровней сигналов RS-232 в уровни ТТЛ, и наоборот. Текущие рассылаемые платы, вроде Diecimila, программируются через USB, что осуществляется благодаря микросхеме конвертера USB-to-serial вроде FTDI FT232. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется подключение отдельной платы USB-to-serial или кабеля.
Платы Arduino позволяют использовать большую часть I/O выводов микроконтроллера во внешних схемах. Например, в плате Diecimila доступно 14 цифровых вводов/выводов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов. Эти выводы доступны в верхней части платы через 0,1 дюймовые разъёмы типа «мама». На рынке доступны несколько внешних плат расширения, известных как «shields»." Википедия.
Зашел на почту и забрал пришедшую бандероль. Уже и поигрался, но жаль что немного - сказывается отсутствие диодов, резисторов и т.п. Написал классический "Hello World" и программу чуть чуть посложнее :)
Arduino - микро-ЭВМ, подключаемая к компьютеру по COM порту (или по USB с эмуляцией COM), позволяющая подключать к себе множество различных периферийных устройств. Программируется на простом языке Wiring. Он представляет собой C/C++, дополненный необходимыми для Arduino библиотеками. Не нужно никаких программаторов. Одно нажатие кнопки "Upload" - и все, программа залита. После чего плата успешно работает автономно.
Дальше немного фотографий :)

Читать дальше......
Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328 и ATmega168 в новых версиях и ATmega8 в старых) и элементной обвязки для программирования и интеграции с другими схемами. На каждой плате обязательно присутствуют линейный стабилизатор напряжения 5 В и 16 МГц кварцевый генератор (в некоторых версиях керамический резонатор). В микроконтроллер предварительно прошит загрузчик, поэтому внешний программатор не нужен.
На концептуальном уровне все платы программируются через RS-232 (последовательное соединение), но реализация этого способа отличается от версии к версии. Плата Serial Arduino содержит простую инвертирующую схему для конвертирования уровней сигналов RS-232 в уровни ТТЛ, и наоборот. Текущие рассылаемые платы, вроде Diecimila, программируются через USB, что осуществляется благодаря микросхеме конвертера USB-to-serial вроде FTDI FT232. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется подключение отдельной платы USB-to-serial или кабеля.
Платы Arduino позволяют использовать большую часть I/O выводов микроконтроллера во внешних схемах. Например, в плате Diecimila доступно 14 цифровых вводов/выводов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов. Эти выводы доступны в верхней части платы через 0,1 дюймовые разъёмы типа «мама». На рынке доступны несколько внешних плат расширения, известных как «shields»." Википедия.
Зашел на почту и забрал пришедшую бандероль. Уже и поигрался, но жаль что немного - сказывается отсутствие диодов, резисторов и т.п. Написал классический "Hello World" и программу чуть чуть посложнее :)
Arduino - микро-ЭВМ, подключаемая к компьютеру по COM порту (или по USB с эмуляцией COM), позволяющая подключать к себе множество различных периферийных устройств. Программируется на простом языке Wiring. Он представляет собой C/C++, дополненный необходимыми для Arduino библиотеками. Не нужно никаких программаторов. Одно нажатие кнопки "Upload" - и все, программа залита. После чего плата успешно работает автономно.
Дальше немного фотографий :)
Комплектация.
Читать дальше......
Подписаться на:
Сообщения (Atom)