Ei ei, m6te oli piirata ADC sisendi pinge VCC/2 peale.
Ei ei, m6te oli piirata ADC sisendi pinge VCC/2 peale.
V2ntv6ll on selleks k6ver, et mahuks mootorisse 2ra.
See pingega mängimine ei aidanud. Ka mitte andurite toitmine 3,3 pesast.
Viskasin selle üleannetu potega teise projekti ootama.
Üritasin nuppudega väärtust muuta. Nupud on kaldejoontereast alates kirjeldatud.
Hakkas sigudik lihtsalt jooksma iga sekundi tagant. Kuskil olen vea teinud. Katsetasin nii analoogsisendiga kui digisisendiga, sama ikka.
Kood:/* Adafruit Arduino - Lesson 12. Light and Temperature */ #include <LiquidCrystal.h> int INtempPin = A0; int BACKtempPin = A1; float SETtempC = 25.0; int ButtonA = A2; int ButtonB = 6; // BS E D4 D5 D6 D7 LiquidCrystal lcd(7, 8, 9, 10, 11, 12); void setup() { lcd.begin(16, 2); //set the LED pins as outputs for (int pinNumber = 3; pinNumber < 5; pinNumber++) { pinMode(pinNumber, OUTPUT); digitalWrite(pinNumber, LOW); pinMode(2,INPUT_PULLUP); digitalRead(pinNumber); digitalWrite(pinNumber, LOW); } } void loop() { // Display Temperature in C int INtempReading = analogRead(INtempPin); float INtempVolts = INtempReading * 5.0 / 1024.0; float INtempC = (INtempVolts - 0.5) * 100.0 + 50; // ---------------- lcd.print("I"); lcd.setCursor(1, 0); lcd.print(INtempC); lcd.setCursor(3, 0); lcd.print((char)223); // Display BACK Temperature in C int BACKtempReading = analogRead(BACKtempPin); float BACKtempVolts = BACKtempReading * 5.0 / 1024.0; float BACKtempC = (BACKtempVolts - 0.5) * 100.0 + 50; lcd.setCursor(4, 0); lcd.print("B"); lcd.setCursor(5, 0); lcd.print(BACKtempC); lcd.setCursor(7, 0); lcd.print((char)223); // Display SET Temperature in C //int SETtempReading = analogRead(SETtempPin); //float SETtempVolts = SETtempReading * 5.0 / 1024.0; //float SETtempC = (SETtempVolts) * 12 +5; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //button increase //pressed = button(high); if(ButtonA = HIGH) { SETtempC++; } else if(ButtonB = HIGH) { SETtempC--; } lcd.setCursor(8, 0); lcd.print("S"); lcd.setCursor(9, 0); lcd.print(SETtempC); lcd.setCursor(13, 0); lcd.print((char)223); lcd.setCursor(14, 0); if (SETtempC +1 < BACKtempC) { lcd.print("CO"); } else if (SETtempC > 1+ BACKtempC){ lcd.print("WO"); } else if ((SETtempC - BACKtempC) <1 > -1){ lcd.print("OK"); } //lcd.print("II"); lcd.setCursor(0, 1); lcd.print("ERTEC"); lcd.setCursor(7, 1); lcd.print(200*4.19*(INtempC-BACKtempC)/3600); lcd.setCursor(13, 1); lcd.print("KW "); delay(500); //could down if (SETtempC +1 < BACKtempC) { digitalWrite(3, HIGH); delay(1000); digitalWrite(3, LOW); delay(1000); } //warm up else if (SETtempC -1 > BACKtempC) { digitalWrite(4, HIGH); delay(1000); digitalWrite(4, LOW); delay(1000); } }
Neid Tiny-sid on üsna mitut sorti.
http://freedatasheets.com/datasheet-search/attiny
Milline see mittesuhtleja on?
Vaevalt nüüd see ATtiny 45 süüdi on. Ikka klaviatuuri ja tooli vaheline materjal. Juba on laual ka 84 aga sellele pole suure otsimise järel ikka driverit leidnud.
Lisaks võitlen ++ ja -- nuppudega. Ühele poole sain suure vaevaga juba liikuma aga, aga, aga. Käisin vales koolis.
Sain nupud tööle. Läks ca 10h pusimist ja korras. Loll on paha olla. Õnneks jätkus püsivust ja pea ei plahvatanudki. Ma ei üritagi siinkohal seda loogikat selgitada, kui kellelgi peaks vaja minema ju siis talle saan selgitada.
SET
24.90
SET
24.80
SET
24.70
SET
24.60
SET
24.50
SET
24.60
SET
24.70
SET
24.80
SET
24.90
SET
25.00
Kas keegi omab kogemust temp digianduriga. DS18B20 . Neid saaks panna 127 tk ühe juhtme otsa. Kui esialgu saaks 2 gi. Anduriga suhtlemiseks on vaja fail laadida. Laadisin ja miskipärast õiendab, et ei leia. Istub samas kataloogia, kus sketš. Lisaks ei leia ATtiny84 driverit, ehk on mõni link soovitada.
Viimati muutis hotsnow : 26-07-16 kell 01:01
Digianduri DS18B20 ühendamine https://www.google.ee/search?q=ds18b...b3YN1bNYl4M%3A
kuna algselt puuduvad failid mida järgnevalt välja kutsutakse siis tuleb need laadida librarisse.
#include <OneWire.h> http://www.pjrc.com/teensy/arduino_l...es/OneWire.zip
#include <DallasTemperature.h> see dallas on kah kuskil saadaval, hetkel ei leia.
Selle progega saab anduri unikaalse 16 kohalise aadressi.
Ja hiljem oma proges saab anduri poole pöörduda seda aadressi kasutades sellisel kujul läbi 0x ja komadeKood:#include <OneWire.h> // DS18S20 Temperature chip i/o OneWire ds(10); // on pin 10 void setup(void) { // initialize inputs/outputs // start serial port Serial.begin(9600); } void loop(void) { byte i; byte present = 0; byte data[12]; byte addr[8]; ds.reset_search(); if ( !ds.search(addr)) { Serial.print("No more addresses.\n"); ds.reset_search(); return; } Serial.print("R="); for( i = 0; i < 8; i++) { Serial.print(addr[i], HEX); Serial.print(" "); } if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.print("CRC is not valid!\n"); return; } if ( addr[0] == 0x10) { Serial.print("Device is a DS18S20 family device.\n"); } else if ( addr[0] == 0x28) { Serial.print("Device is a DS18B20 family device.\n"); } else { Serial.print("Device family is not recognized: 0x"); Serial.println(addr[0],HEX); return; } ds.reset(); ds.select(addr); ds.write(0x44,1); // start conversion, with parasite power on at the end delay(5000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad Serial.print("P="); Serial.print(present,HEX); Serial.print(" "); for ( i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); Serial.print(data[i], HEX); Serial.print(" "); } Serial.print(" CRC="); Serial.print( OneWire::crc8( data, 8), HEX); Serial.println(); }
DeviceAddress thermometer = { 0x28, 0xFF, 0x80, 0x5C, 0x35, 0x16, 0x3, 0x6 }; //28 FF 80 5C 35 16 3 6
Hetkel sirvib antud teemat 1 kasutaja(t). (0 liiget ja 1 külalist)
Lemmikud