// // FILE: dht11_test1.pde // PURPOSE: DHT11 library test sketch for Arduino // #include <dht11.h> dht11 DHT; #include <Wire.h> #define BMP085_ADDRESS 0x77 const unsigned char OSS = 0; // Oversampling Setting #define DHT11_PIN 2 #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Calibration values int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md;
// b5 is calculated in bmp085GetTemperature(...), this variable is also used in bmp085GetPressure(...) // so ...Temperature(...) must be called before ...Pressure(...). long b5;
// Calculate pressure given up // calibration values must be known // b5 is also required so bmp085GetTemperature(...) must be called first. // Value returned will be pressure in units of Pa. long bmp085GetPressure(unsigned long up){ long x1, x2, x3, b3, b6, p; unsigned long b4, b7;
// Read 2 bytes from the BMP085 // First byte will be from 'address' // Second byte will be from 'address'+1 int bmp085ReadInt(unsigned char address) { unsigned char msb, lsb;
// Read the uncompensated temperature value unsigned int bmp085ReadUT(){ unsigned int ut;
// Write 0x2E into Register 0xF4 // This requests a temperature reading Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x2E); Wire.endTransmission();
// Wait at least 4.5ms delay(5);
// Read two bytes from registers 0xF6 and 0xF7 ut = bmp085ReadInt(0xF6); return ut; }
// Read the uncompensated pressure value unsigned long bmp085ReadUP(){
unsigned char msb, lsb, xlsb; unsigned long up = 0;
// Write 0x34+(OSS<<6) into register 0xF4 // Request a pressure reading w/ oversampling setting Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x34 + (OSS<<6)); Wire.endTransmission();
// Wait for conversion, delay time dependent on OSS delay(2 + (3<<OSS));
// Calculate pressure given up // calibration values must be known // b5 is also required so bmp085GetTemperature(...) must be called first. // Value returned will be pressure in units of Pa. long bmp085GetPressure(unsigned long up){ long x1, x2, x3, b3, b6, p; unsigned long b4, b7;
// Read 2 bytes from the BMP085 // First byte will be from 'address' // Second byte will be from 'address'+1 int bmp085ReadInt(unsigned char address) { unsigned char msb, lsb;
// Read the uncompensated temperature value unsigned int bmp085ReadUT(){ unsigned int ut;
// Write 0x2E into Register 0xF4 // This requests a temperature reading Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x2E); Wire.endTransmission();
// Wait at least 4.5ms delay(5);
// Read two bytes from registers 0xF6 and 0xF7 ut = bmp085ReadInt(0xF6); return ut; }
// Read the uncompensated pressure value unsigned long bmp085ReadUP(){
unsigned char msb, lsb, xlsb; unsigned long up = 0;
// Write 0x34+(OSS<<6) into register 0xF4 // Request a pressure reading w/ oversampling setting Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x34 + (OSS<<6)); Wire.endTransmission();
// Wait for conversion, delay time dependent on OSS delay(2 + (3<<OSS));
Néztem azt is, de nekem az annyira nem tiszta...először is nem RGB szalagom van, illetve nem értem, hogy 9V-ot miért köt a 12V-os szalagra... :)
Megcsináltam a nyáktervet ebből a kapcsolási rajzból és sokkal átláthatóbb...megvan a hely, ahol a 12V megy a panelbe, külön vannak a csatlakozók az arduinoból kijövő jelnek....stb.
De általában ezek a kínai tömegtermékek 99%-ban ugyanarra az 1 csipre épülnek mind. Keresel valami hasonlót, ahol le van írva a chip, és kész, vagy neten keresel rá hobbista oldalakon hasonlóra.
Ezekkel a kínaiakkal nem lehet beszélni... Idiótaságokat ír vissza... Köze sincs a kérdésemhez... Tehát nem tudtam meg semmi újat sajnos... Hogy tudnám még kideríteni a szükséges adatokat?
Ma volt egy kis időm, így az eddig tanultakból, és teszt programokból összeollózva sikerült összehoznom egy légnyomás, és hőmérő állomást, lcd-re kiírva.
A probléma csak annyi, hogy a kiírások végén vannak vonalas karakterek.
De tény, hogy én se az "alap" arduino-t raktam volna bele, hanem maximum az Arduino Mini-t vagy Pro-t. És persze rengeteg korlátja van az atmega 328-nak is, a szempont az olcsóság és elérhetőség is volt az alkatrészeknél.
De azért a stabilitása elég jó, ráadásul van pl. watchdog szolgáltatása is.
Az elv persze jó, de ettől az Arduino és klónjai (a Raspberry Pi-t, a Blackbone-t és a hasonló kütyüket is beleértve) belépőszintű, oktatási célú, kísérletezési platform marad. Egyszerűen műszaki kialakítása folytán alkalmatlan másra. Persze otthoni barkácsoláshoz mindennél jobb (kő egyszerű, rohadt olcsó és viszonylag üzembiztos), de kereskedelmi terméket azért elég meredek dolog építeni rá. Rohadt nagy (már a processzorhoz képest), rengeteg felesleges hóbelevanc van rajta, mindemellett nehéz illeszteni meglévő rendszerekhez (pl. 12V-ra autós felhasználáshoz). Mert azét valljuk be, elég hülyén néz ki egy próbatábla és egy halom kábel a kesztyűtartóban összeszigszalagozva.
De. Azt meg lehet csinálni, hogy kipróbálod, aztán tervezel hozzá egy nyákot (Fritzing), ráraksz mindent, ami kell, leveszel mindent, ami nem kell, és hopsz, van egy működő céleszközöd, ami pici, üzembiztos és jó esetben pontosan azt tudja, mint amire szükséged van (a programozhatóságot meg megoldod vagy egy soros programozóval vagy egy másik arduinoval ICSP porton.
Menj fel az AtMega honlapjára és nézd meg, mennyi féle mikrokontrollert kínálnak. Döbbenet. És ebből a 168/328, a 32u4 és a Mega2560 csak három (a Due-t hagyjuk most, az lényegében marginális, mert a 3,3 V miatt lényegében semmilyen meglévő cuccal nem kompatibilis, cserébe mondjuk rohadt gyors).
Ha a felhasználási módokat nézzük, adott mondjuk egy quadcopter, amire szeretnél egy PID-es stabilizátort rakni. Adott az Arduino és mondjuk egy MPU6050 modul. Van mondjuk 15 gramm alkatrészed, amiből használsz 4, maximum 5 grammot... A maradék meg holt felesleges.
Az az igazság, hogy én is ezt hittem (hogy nem végtermékhez van).
Amíg el nem olvastam egy cikket (nem találom), ahol a szerző azzal érvelt, hogy minden más technológia jön-megy (pl. PLC gyártó csődbe mehet, vagy kivezethet egy modellt a piacról), de az Arduino keretrendszernél garantálják, hogy menni fog (amíg él az arduino mozgalom), ha kiesik az egyik shield-gyártó, jön más, st.
Elfelejtettem említeni, EZTa tápot vettem hozzá. Sajnos amíg nem jön meg, nem tudok rámérni. Amit említesz programot letöltöttem, remélem én is sok hasznát veszem majd. :)
Átnéztem a könyvtárakat, eltüntettem minden LDC-s könyvtárat és csak ez a speci maradt.
Így már lefordult a program. Eredmény:
i2cLCDguesser v1.4.1 - Guess constructor for i2c LCD backpack ---------------------------------------------------------------- NOTE/WARNING: Guessing the i2c constructor is not really a good thing since it could damage the hardware. Use with caution! Do not leave things with an incorrect guess for too long. i.e. advance to the next guess as soon as possible when the guess in incorrect. If the guess is correct, the constructor will show up on the LCD. ----------------------------------------------------------------
<Press <ENTER> or click [Send] to Continue> Scanning i2c bus for devices.. i2c device found at address 0x27 Device found: PCF8574 <Press <ENTER> or click [Send] to start guessing> Trying: lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) <Press <ENTER> or click [Send] to Continue> Trying: lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE) <Press <ENTER> or click [Send] to Continue> Trying: lcd(0x27, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE) <Press <ENTER> or click [Send] to Continue> Trying: lcd(0x27, 6, 5, 4, 0, 1, 2, 3, 7, NEGATIVE) <Press <ENTER> or click [Send] to Continue> Trying: lcd(0x27, 6, 5, 4, 0, 1, 2, 3, 7, POSITIVE) <Press <ENTER> or click [Send] to Continue> Trying: lcd(0x27, 4, 5, 6, 0, 1, 2, 3, 7, POSITIVE) <Press <ENTER> or click [Send] to Continue> Scanning i2c bus for devices.. i2c device found at address 0x27 Device found: PCF8574 <Press <ENTER> or click [Send] to start guessing> Trying: lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) <Press <ENTER> or click [Send] to Continue>
Ebből az első próbára volt a kijelzőn megjelenítés.
Tippem szerint rosszul van felrakva a könyvtár. Restart, illetve talán még a folderekkel lehet kicsit bíbelődni (átrakni, ahogy írtad, hogy fura helyen van).