Ootkos vilkassut että conffaat tuon piirin oikein?
pahus ku itellä ei ole noita piirejä, niin ei voi testiä ollenkaan. LM75 verrattuna pikkusia muutoksia, mutta ei pitäs olla kuitenkaan niin paljoa vaikeampi käyttää.
Vai oliko LM75:sta kokemuksia?
Edit:
Arduinosta en tiiä onko I2C liikenteessä timeout. Jos on niin oletko katellut, että liikenne menee oikein eikä timeouttia tapahdu?
Ei ole ollu LM75, LM35 on ollut, mutta on “hiukka” yksinkertaisempi…
I2C on on mulle muutoinkin outo juttu, mutta tuleepahan tutustuttua!
En ole confannut piiriä ollenkaan, oletan että siinä on tietty perusvika,
tai ei se vika piirissä ole
Pitkin nettiä olen haeskellut vinkkejä, mutta aika köyhäksi on anti
jäänyt.
Ja ajatehan sopivilla kelloilla tuota piiriä? Jos on mahdollista niin hiljennä vauhtia. se menee paremmin piikkilangoista ja muista huonoista johdoista pidemmän matkaa.
Jep, olen kyllä katsastanut mainitut esimerkkikoodit ja pari muutakin
paikkaa, jotka kaivoin esille.
Perusongelma on I2C -kädettömyyteni.
Olen ymmärtävinäni, että ensin tehdään langoitus.
GND - GND
Vcc - 5V
A0, A1, A2 - 5V
SLC ja SDA pinnit 5 ja 4
Tämä lienee oikein.
Sitten tarvitsee varmaan ajaa anturille jokin configgialustus (ei mitään hajua),
sen jälkeen kai aletaan lukemaan piiriä jotenkin (ei juuri hajua tästäkään).
Esimerkkikoodia MCP9808 on tosi huonosti saatavilla. Tai manuaalin lopussa on
kyllä PICille tehty esimerkkikoodi, joka ei aivan minulle avaudu.
EDIT:
Pientä edistystä. I2C -skanneri löytää I2C-laitteen osoitteesta 0x1F.
Koodi palauttaa aina luvun 0. Jokin mättää…
Koplasin Nick Gammonin koodia avukseni, vaan eipä toimi tämäkään.
// Written by Nick Gammon
// Date: 18th February 2011
#include <Wire.h>
const int SLAVE_ADDRESS = 0x1F;
void sendCommand (const byte cmd, const int responseSize)
{
Wire.beginTransmission (SLAVE_ADDRESS);
Wire.write (cmd);
Wire.endTransmission ();
Wire.requestFrom (SLAVE_ADDRESS, responseSize);
} // end of sendCommand
void setup ()
{
Wire.begin ();
Serial.begin (9600); // start serial for output
} // end of setup
void loop()
{
int val;
sendCommand ((byte) 0x05, 2);
val = Wire.read ();
val <<= 8;
val |= Wire.read ();
Serial.print ("Value of A0: ");
Serial.println (val, BIN);
delay (500);
} // end of loop
Moi, kokeilin alla olevaa… takaisin tulee 0 ja 29. Olen kokeillut vaikka mitä, vaan ei onnistu.
Pitäisi vääntää manuaalin ww1.microchip.com/downloads/en/D … 25095A.pdf sivulla 25 oleva koodi “arduinaksi”… Ei oikein multa väänny.