Ahoj, zajímalo by mě, zda by se tento program v Pythonu dal nějak překonvertovat do prostředí Arduina. Pokud nedal, potřebuji vysvětlit princip funkce tohoto programu (je to nějaký jiný vzorek, uzpůsobený přímo pro Arduino, který mi ale přijde velice skromný):
/*
Temperature Sensor
Reads an Analog Devices TMP36GT9Z-ND or AD22100 temperature sensor on analog pin 0
and converts the voltage value to temperature.
Connect Pin 1 to 5 V.
Connect Pin 2 to A0.
Connect Pin 3 to Gnd.
*/
int TsensorPin = A0; // select the input pin for the sensor
int ledPin = 13; // select the pin for the LED
int wait = 500; // 1/2 wait time between measurements
double temperature = 0.0;
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(TsensorPin, INPUT); // and set pins to input.
pinMode(ledPin, OUTPUT); // Set Temperature Sensor Pin
Serial.begin (115200); // Set up the Serial Connection.
Serial.println("Reading the Temperature Sensor"); // Greet user.
}
void loop() {
temperature = TMP36GT_AI_value_to_Celsius(analogRead(TsensorPin)); // read temperature
// temperature = AD22100K_AI_value_to_Celsius(analogRead(TsensorPin)); // read temperature
Serial.print("Temperature read (C): ");
Serial.println(temperature,2); // write temperature to Serial
digitalWrite(ledPin, HIGH); // turn the ledPin on
delay(wait); // stop the program for <wait> milliseconds:
digitalWrite(ledPin, LOW); // turn the ledPin off:
delay(wait); // stop the program for for <wait> milliseconds:
}
double TMP36GT_AI_value_to_Celsius(int AI_value)
{ // Convert Analog-input value to temperature
float voltage;
voltage = AI_value * (5000.0/1024); // Sensor value in mV:
return ((voltage -750) /10) +25; // Temperature according to datasheet: 750 mV = 25 °C
// 10 mV / °C
}
double AD22100K_AI_value_to_Celsius(int AI_value)
{ // Convert Analog-input value to temperature
float voltage;
voltage = AI_value * (5000.0/1024); // Sensor value in mV:
return (voltage -1375) /22.5; // Temperature according to datasheet: 1.375 V <-> 0 °C
// 22.5 mV / °C; Ratiometric measurement, conversion valid for 5 V!
}
Založen: May 22, 2013 Příspěvky: 325 Bydliště: Psáry JN79GW
Zaslal: pá leden 30 2015, 19:52 Předmět:
To je psáno přímo v programovacím jazyce arduino IDE. Můžeš to překopírovat přeložit a downloadovat. Spoustu příruček o Arduinu najdeš na internetu, nemá smysl aby ti tady někdo, krok za krokem vysvětloval jednotlivé instrukce. Jestli budeš mít konkrétní dotaz, pošli SZ. _________________ Jirka
Connect Pin 1 to 5 V.
Connect Pin 2 to A0.
Connect Pin 3 to Gnd.
To jsou instrukce o propojení pinů Arduina a kontaktů na čidle snímače teploty, že?
Já si jen nejsem jist, jak to přesně funguje... co za teploty to snímá a jak to s nimi pracuje? Najdu tu číselnou hodnotu "nějaký" teploty, ale už z toho nevím, co to vlastně dělá... při jaký teplotě to spustí dohřev, a při jaký ho to přeruší?
PS: tím "program v pythonu" jsem myslel program na tomto odkaze, viz horní část příspěvku: "http://arduino.cz/termostat-s-raspberry-pi/ "
Založen: May 22, 2013 Příspěvky: 325 Bydliště: Psáry JN79GW
Zaslal: pá leden 30 2015, 23:11 Předmět:
Asi by ses měl nejprve než přistoupíš k prohramování seznámit s HW arduina a čidla. Zkusím několika slovy rychlokurs aby ses alespoň dokázal trochu orientovat.
Toto je komentář negeneruje se žádný kód, je to pouze pro popis programu a je zde skutečně napsáno, jak máš připojit čidlo k Arduinu
/*
Temperature Sensor
Reads an Analog Devices TMP36GT9Z-ND or AD22100 temperature sensor on analog pin 0
and converts the voltage value to temperature.
Connect Pin 1 to 5 V.
Connect Pin 2 to A0.
Connect Pin 3 to Gnd.
*/
// - jednořádkový komentář
Deklarace proměnných - tady se definují proměnné, se kterými program následně pracuje
int TsensorPin = A0; // select the input pin for the sensor
int ledPin = 13; // select the pin for the LED
int wait = 500; // 1/2 wait time between measurements
double temperature = 0.0;
Inicializační funkce - tato část programu se provede pouze jednou, na začátku programu na nastaví nějaké výchozí podmínky pro program (konfiguruje V/V, kom. linku a pod.)
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(TsensorPin, INPUT); // and set pins to input.
pinMode(ledPin, OUTPUT); // Set Temperature Sensor Pin
Serial.begin (115200); // Set up the Serial Connection.
Serial.println("Reading the Temperature Sensor"); // Greet user.
}
Tělo programu, teprve tady se dozvíš, co program vlastně dělá. Vykonává se cyklicky po celou dobu kdy je CPU pod napětím
Program nejprve přečte teplotu, uloží do proměnné "temperature", ve formě textu odešle změřenou teplotu do sériové linky, zabliká LED a vrací se zpět na začátek na čtení teploty. Takže zatím žádná regulace, pouze výpis změřené teploty na sériový port
void loop() {
temperature = TMP36GT_AI_value_to_Celsius(analogRead(TsensorPin)); // read temperature
// temperature = AD22100K_AI_value_to_Celsius(analogRead(TsensorPin)); // read temperature
Serial.print("Temperature read (C): ");
Serial.println(temperature,2); // write temperature to Serial
digitalWrite(ledPin, HIGH); // turn the ledPin on
delay(wait); // stop the program for <wait> milliseconds:
digitalWrite(ledPin, LOW); // turn the ledPin off:
delay(wait); // stop the program for for <wait> milliseconds:
}
Tady jsou deklarované funkce pro čtení teploty
double TMP36GT_AI_value_to_Celsius(int AI_value)
{ // Convert Analog-input value to temperature
float voltage;
voltage = AI_value * (5000.0/1024); // Sensor value in mV:
return ((voltage -750) /10) +25; // Temperature according to datasheet: 750 mV = 25 °C
// 10 mV / °C
}
double AD22100K_AI_value_to_Celsius(int AI_value)
{ // Convert Analog-input value to temperature
float voltage;
voltage = AI_value * (5000.0/1024); // Sensor value in mV:
return (voltage -1375) /22.5; // Temperature according to datasheet: 1.375 V <-> 0 °C
// 22.5 mV / °C; Ratiometric measurement, conversion valid for 5 V!
}[/quote]
Jak vidíš, je to jednoduché ale úplně bez znalostí to nejde. I na takto jednoduchou úlohu toho musíš znát poměrně dost o mikroprocesorech a programování. Text na stránkách arduino http://arduino.cc/ je psaný pro začátečníky, jestli mu nebudeš rozumět, prohlédni EB, bylo zde již několik odkazů na materiály o Arduinu. _________________ Jirka
double TMP36GT_AI_value_to_Celsius(int AI_value)
{ // Convert Analog-input value to temperature
float voltage;
voltage = AI_value * (5000.0/1024); // Sensor value in mV:
return ((voltage -750) /10) +25; // Temperature according to
datasheet: 750 mV = 25 °C
// 10 mV / °C
}
Prosímtě, tato část mi je nejasná... kde přesně vezme program ten "skript" TMP36GT_AI_value_to_Celsius --- prostě jak funguje ten převod napěťová hodnoty na teplotu?
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.