Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
tetye
Chipgyilok
Hozzászólások: 279 Csatlakozott: 2007. augusztus 29. szerda, 6:00
Hozzászólás
Szerző: tetye » 2013. március 29. péntek, 16:29
ppeter írta: Robert írta: És az "arduino" karakterlánc 8 tagú....
na de utána volt char Str6[15] = "arduino"; is, ami már nem stimmel
tetye: a temp1 milyen típusú ?
Szerintem az is csak 7 tagú.
Az alsókból szeretnék hasznos infót kivenni és átadni a fent lévőbe:
Kód: Egész kijelölése
uint16_t print_webpage_ds1820(uint8_t *buf) {
uint16_t plen; // Packet Length
plen=http200ok();
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<html><head><title>Arduino</title></head><body bgcolor=\"black\">\n"));
int x = dht_temp_www('t');
sprintf(mystr,"<div><tr><td><font color=lime>DHT temperature: %x °C </font></td></tr></div>\n",x,x);
add_string(mystr, plen);
delay(500);
x = dht_temp_www('h');
sprintf(mystr,"<div><tr><td><font color=lime>DHT humidity: %d %% </font></td></tr></div>\n",x,x);
add_string(mystr, plen);
sensors.requestTemperatures();
int akarmi;
akarmi = printTemperature(insideThermometer);
sprintf(mystr,"<div align=\"center\"><tr><td><font color=lime> temperature: %akarmi °C </font></td></tr>\n",akarmi,akarmi);
add_string(mystr, plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></center><hr></body></html>"));
return(plen);
}
....
setup
....
loop
....
int dht_temp_www(char res){
int result;
int chk = DHT11.read(DHT11PIN);
switch (chk)
{
case 0: Serial.println("OK");
Serial.print(res);
switch (res)
{
case 't':
result = ((float)DHT11.temperature);break;
case 'h':
result = ((float)DHT11.humidity);break;
}
case -1: Serial.println("Checksum error"); break;
case -2: Serial.println("Time out error"); break;
default: Serial.println("Unknown error"); break;
}
return result;
}
int printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
akarmi= tempC;
}
}
tetye
Chipgyilok
Hozzászólások: 279 Csatlakozott: 2007. augusztus 29. szerda, 6:00
Hozzászólás
Szerző: tetye » 2013. március 29. péntek, 17:30
Más kérdésem is lenne, html-ben szeretnék megjeleníteni mért adatokat DS1820 4-5db 1dht11 meg egy i2c-s légnyomás mérő ilyesmi lenne. Hogy lehetne megoldani hogy friss adata legyen a weblapnak és egy változóból írja ki azt? ebben hogy lehetne timert beállítani hogy pl 1másodpercenként fusson? 16mhz orajelem van.
Robert
Elektronbűvölő
Hozzászólások: 10191 Csatlakozott: 2005. december 9. péntek, 7:00
Hozzászólás
Szerző: Robert » 2013. március 29. péntek, 17:49
1sec: a html lapot kérd újra.
Refresh metatag...
Arduino alatt:delaymilisec()
Timer: onetimer függvénykönyvtár. De nem Bascom egyszerűségű...
tetye
Chipgyilok
Hozzászólások: 279 Csatlakozott: 2007. augusztus 29. szerda, 6:00
Hozzászólás
Szerző: tetye » 2013. március 29. péntek, 17:57
Bascomban sem volt egyszerű... ettől meg kezdek félni.
Nem jó a lap újra kérése mert akkor megnő a válasz idő széthullik a kapcsolat. (ugye akkor szenzoronként x ideig áll GET közben).
És HA TALÁN... sikerül valahogy összeraknom, szeretnék még egy telnet-et is bele.(Ez lenne a legfontosabb. Távoli server(debian) betelnetelrá lekéri az adatokat a változókból és kilép. )
Mióta a html kódban kérdezem le a hőmérőt, sokkal bizonytalanabb a mérési eredmény, crc hiba /ismeretlen hiba/ nem talál szenzort...
Kód: Egész kijelölése
Checksum error
OK
Checksum error
Time out error
OK
Checksum error
Time out error
OK
Checksum error
OK
Checksum error
OK
Checksum error
Time out error
OK
Checksum error
Time out error
OK
Checksum error
Robert
Elektronbűvölő
Hozzászólások: 10191 Csatlakozott: 2005. december 9. péntek, 7:00
Hozzászólás
Szerző: Robert » 2013. március 29. péntek, 18:02
Túl gyorsan kéred a szenzort v. parazitaként táplálod...
tetye
Chipgyilok
Hozzászólások: 279 Csatlakozott: 2007. augusztus 29. szerda, 6:00
Hozzászólás
Szerző: tetye » 2013. március 29. péntek, 18:05
van a lekérdezések között. Be van kötve fix5v táp 100nF val.
update:
Már így néz ki az a rész hogy timer-ban kérdezem le a DS-eket, DE! ez nem az a timer ami a háttérben dolgozik... Ettől az ENC elveszti a kapcsolatot. Gondolom simán megáll az egész program 2 secre.
Nem tudnátok ebben segíteni? A változós kérdést igaz tizedes nélkül de megoldottam.
Kód: Egész kijelölése
#include "Timer.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 21
Timer t;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x10, 0x3F, 0x78, 0x8A, 0x02, 0x08, 0x00, 0x9A };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
uint16_t temp1;
uint16_t temp2;
void setup() {
Serial.begin(9600);
t.every(1000, takeReading);
sensors.begin();
sensors.setResolution(insideThermometer, 9);
sensors.setResolution(outsideThermometer, 10);
}
void loop() {
t.update();
}
void takeReading()
{
Serial.println("letelt timer");
sensors.requestTemperatures();
delay(2000);
float temp1 = sensors.getTempC(insideThermometer);
if (temp1 == -127.00) {
Serial.print("Error getting temperature");
}
Serial.print(temp1);
float temp2 = sensors.getTempC(outsideThermometer);
if (temp2 == -127.00) {
Serial.print("Error getting temperature");
}
Serial.print(temp2);
}
Jelenség:
Kód: Egész kijelölése
26.31Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
26.37Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
letelt timer
26.44Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
26.37Error getting temperature-127.00letelt timer
26.44Error getting temperature-127.00letel