Arduino pomoc

ruzne programy,konverze dat, digitalizace, atd...
Odpovědět
Uživatelský avatar
packa
Příspěvky: 6959
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

9. 11. 2014, 6:58

Zdravím , mám takový problém , mám napsaný program na termostat kde se zadává 6 parametrů , které ukládám do EEPROM , jeden parametr je +20 až -20 stupnů , pokud se zadaný údaj pohybuje v kladných číslech tak se do EEPROM uloží v pořádku , ale když zadám hodnotu v mínusových hodnotách tak se neuloží a po načtení je nastavená default hodnota , nevíte co s tím ? asi je potřeba upravit knihovna EEPROM ? a jak ?
LuKo
Sponzor fora
Příspěvky: 31
Registrován: 5. 5. 2014, 11:44
Bydliště: Kolín

9. 11. 2014, 8:52

Nemám teď po ruce Arduino, abych to vyzkoušel. Pomůže odkaz: http://forum.arduino.cc/index.php?topic=46911.0" onclick="window.open(this.href);return false; ?
gnat
Příspěvky: 1002
Registrován: 24. 2. 2009, 9:14
Bydliště: doma
Kontaktovat uživatele:

9. 11. 2014, 9:58

není to náhodou u_int ?
SABLE-2015
Uživatelský avatar
packa
Příspěvky: 6959
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

10. 11. 2014, 4:54

můžete mě někdo nakopnout jak to konkrétně zapsat ?
mám to :

teplotblok = EEPROM.read(5);
delay(500);


EEPROM.write(5, teplotblok);


kde to zapisuje od 0 do 15 , ale já potřebuju ukládat hodnoty od -15 do +15
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22413
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

10. 11. 2014, 4:58

napis sem i definice promennych a definice tech funkci z knihovny
jakouze to knihovnu pouzivas atd...
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
packa
Příspěvky: 6959
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

10. 11. 2014, 5:15

knihovna je EEPROM , proměnné jsou od -15 do +15 celá čísla žádné dsetinné .
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22413
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

10. 11. 2014, 6:24

tak jsem si to musel dohledat sam

kdyz jsem se te ptal na knihovnu tak jsem ocekaval:
#include <EEPROM.h>

kdyz na definici promenne tak neco jak o toto:
int a = 0;
int value;

a definici tech funkci neco jako toto:
EEPROM.read(address)
Parameters
address: the location to read from, starting from 0 (int)
Returns the value stored in that location (byte)

k tomu popis datoveho typu byte:
A byte stores an 8-bit unsigned number, from 0 to 255.

z toho plyne jednoznacne to ze se da bez konverze ulozit pouze kladne cislo 0-255
asi nejjednodussi konverzi si provedes prictenim odectenim konstanty viz prispevek predemnou
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
packa
Příspěvky: 6959
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

10. 11. 2014, 6:52

kutil_tim píše:stejně jsou hodnoty z teplotního čidla čísla kladná
jo , ale já ukládám nastavený parametr - to jest max přípustná venkvní teplota pro spuštění tep čerpadla
zatim díky za nakopnutí pokusím se něco spáchat
Uživatelský avatar
packa
Příspěvky: 6959
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

10. 11. 2014, 7:22

takže nakonec jsem to udělal jednoduše takhle , teplota je nastavitelná v rozmezí -15 až O což stačí , nad nulu to nemá cenu blokovat

teplotbl = EEPROM.read(5)*-1;

EEPROM.write(5, teplotbl*-1);
Mex
Příspěvky: 10287
Registrován: 6. 2. 2014, 10:29

10. 11. 2014, 7:29

Nemusíš to vůbec posouvat, jen to přetypuj.

EEPROM.write(5, (unsigned char)teplotbl);

Bude to ukládat teploty -128 ... +127, navíc je to nejrychlejší a z hlediska kódu nejkratší možné řešení, protože nebudeš dělat žádnou matematickou operaci (nebude tam to násobení).
Odpovědět

Zpět na „Ostatní software“