0
А INT — это чего за нога?
Пытаюсь заставить две микросхемы вместе работать. Там есть подводные камни в подключении?
avatar

vqd

  • 21 апреля 2010, 13:41
0
победил

#include <Wire.h>
void setup(){
Wire.begin();
Serial.begin(9600);
}

void loop(){
Wire.requestFrom(B0111111,1);
Serial.print(Wire.receive(), BIN);
Serial.println();
delay(1000);
}

Кнопку прикрутил через массу.
avatar

vqd

  • 21 апреля 2010, 12:46
+1
Не. Я неправильно адрес забил и резисторы не подтянул. Как все сделал оно и заработало. Теперь вот сижу с кнопочкой разбираюсь. Пока безуспешно. Понять не могу в каком виде должно быть сообщение о том что на таком то порту кнопка нажата.
avatar

vqd

  • 21 апреля 2010, 10:27
+1
Усе. разобрался ))))

вот
#include <Wire.h>
void setup(){
Wire.begin();
}

void loop(){
Wire.beginTransmission(B0111000);
Wire.send(B11111111);
Wire.endTransmission();
delay(1000);
Wire.beginTransmission(B0111000);
Wire.send(B00000000);
Wire.endTransmission();
delay(1000);
}
avatar

vqd

  • 21 апреля 2010, 09:36
0
хм. Подтянул к SCL и SDA через 4,7к резисторы +5 и диодик заморгал согласно программе. Но как то тускло он мыргает.
avatar

vqd

  • 21 апреля 2010, 09:09
0
Да чет ничего не получается.

Ноги А0, А1, А2 и 8 ногу — зацепил на массу
SCL и SDA ноги — к 4 и 5 аналоговому выходу на Ардуино
ну и VDD на +5

в произвольный выход втыкаю светодиод и он тускло светиться.

#include <Wire.h>
void setup(){
Wire.begin();
}

void loop(){
Wire.beginTransmission(B01110000); //Адрес PCF8574A
Wire.send(B11111111); //В теории на всех выходах должно быть +5
Wire.endTransmission();
}

И ничего не происходит. Где чего не правильно?
avatar

vqd

  • 21 апреля 2010, 07:21
0
Может кто сделает вольный перевод www.arduino.cc/en/Reference/Ethernet

А то чего то толком понять не могу че да как работает.
avatar

vqd

  • 16 марта 2010, 13:49
+1
Получил езернет модуль для ардуино. Хочу что бы часы автоматом синхронизировались с NTP
Полностью синхронизацию завтра думаю добью а пока есть код для получения даты и времени

Покритикуйте пожалуйста

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 45 }; //IP Arduino
byte mask[] = {255, 255, 255, 0};
byte gw[] = {192, 168, 0, 1};
byte server[] = { 192, 43, 244, 18 }; // time.nist.gov

Client client(server, 13); //порт

void setup()
{
Ethernet.begin(mac, ip, gw, mask);
Serial.begin(9600);

delay(1000);

Serial.println(«connecting...»);

if (client.connect()) {
Serial.println(«connected»);
} else {
Serial.println(«connection failed»);
}
}

void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}

if (!client.connected()) {
Serial.println();
Serial.println(«disconnecting.»);
client.stop();
for(;;)
;
}
}
avatar

vqd

  • 15 марта 2010, 19:09
0
Все равно не понимаю. Датчики воткнуты в монтажку и к Ардуино проводок ну сантимов 10. Откуда помехи то?
avatar

vqd

  • 12 марта 2010, 17:59
0
так и если этот тест не проходит то в чем может быть причина. Когда убираю этот тест все прекрасно работает
avatar

vqd

  • 12 марта 2010, 07:52
0
Вопрос возможно глупый. А для чего CRC проверять?
avatar

vqd

  • 11 марта 2010, 17:09
+1
Работает. Делаю работу на ошибками над своим кодом.
avatar

vqd

  • 11 марта 2010, 16:47
0
реле щелкать будет что в своем доме будет раздражать. Думал как то на симисторах собрать.
avatar

vqd

  • 3 марта 2010, 18:55
0
А можете подсказать решение для включения обогревателя мощностью 3кВт сигналом с Arduino?
avatar

vqd

  • 3 марта 2010, 18:24
0
ага. Ток у меня система отопления на электроконвекторах.

Про кнопки так и подумал. Но это же проводов то сколько. Жесть.

А котел чем включать и выключать собираетесь. Я вот тут читаю про оптосимисторы…
avatar

vqd

  • 3 марта 2010, 14:56
0
Ох сложно чет воспринимается без примера (эт я про кнопки) ((( В мозгом понимаю что это вполне логично но реализацию пока сообразить не могу.
avatar

vqd

  • 3 марта 2010, 14:41
0
6,86 КБ
avatar

vqd

  • 3 марта 2010, 14:19
0
Насчет цифровых датчиков надо подумать как это сделать программно. Кнопок будет немного. Ну штук 5 — 6.
avatar

vqd

  • 3 марта 2010, 14:17
0
В основном надо будет цеплять цифровые температурные датчики, а на выход некий исполнительный элемент (аля реле). Ну и кнопки пожалуй тоже.
avatar

vqd

  • 3 марта 2010, 13:53
+1
Сразу говорю, что программированием не занимался ну очень давно и потому код может быть кривоват. Буду благодарен за оптимизацию и за здоровую критику)))

Программа сразу же начинает выводить данные на LCD и смотрит COM порт. Как только в порту появляется символ R то программа загоняет в микросхему новые данные о времени и дате.

Формат данный с COM должен быть сл. R'секунды''минуты'часы'01'число'месяц'год' (01- я пока не понял что за указатель)

Например R00101301010110 — 13:10:00 01/01/2010

Почиму то в моем варианте секунды не воспринимаются и чип в любом случае выставляет 00

#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystalRus.h>
LiquidCrystalRus lcd(4, 3, 2, 5, 6, 8, 7);
int rtc[7];

void setup()
{
Serial.begin(9600);
}

void loop()
{
int r = Serial.read();
if (r=='R') ds1307_set();
RTC.get(rtc,true);
for(int i=2; i>=0; i--) //Получаем время, подставляем '0' для удобства и ставим ':'
{
if (rtc[i]<10) lcd.print(«0»);
lcd.print(rtc[i]);
if (i>0) lcd.print(":");
}
lcd.setCursor(0,1); //Переводим курсор на вторую строчку
for (int i=4;i<=6;i++)
{
if (rtc[i]<10) lcd.print(«0»); //Получаем дату, подставляем '0' для удобства и ставим '/'
lcd.print(rtc[i]);
if (i<6) lcd.print("/");
}
delay(900);
lcd.clear();
}

void ds1307_set() //отправляем данные в DS1307
{
RTC.stop();

int k = Serial.available();
for (int l=0; l<=k/2-1; l++)
{
int b1 = Serial.read();
int b2 = Serial.read();
RTC.set(l, (b1-48)*10+(b2-48));
}
RTC.start();
}

фото тут — vqd.users.photofile.ru/photo/vqd/115396599/xlarge/135362091.jpg
avatar

vqd

  • 3 марта 2010, 08:22