# Arduino ja TCN75A

**URL:** https://f.ruuvi.com/t/arduino-ja-tcn75a/1395
**Category:** 🇫🇮 Elektroniikka ja ohjelmointi
**Created:** [12 October 2010 08:08 UTC](https://f.ruuvi.com/t/arduino-ja-tcn75a/1395 "2010-10-12T08:08:01Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![karvainen](https://f.ruuvi.com/letter_avatar_proxy/v4/letter/k/dc4da7/32.png) [@karvainen](https://f.ruuvi.com/u/karvainen)
#### Post date: [12 October 2010 08:08 UTC](https://f.ruuvi.com/t/arduino-ja-tcn75a/1395/1 "2010-10-12T08:08:01Z")

</div>

Olen alottanut opiskelemaan arduino ohjelmointia, ledit saatu vilkkumaan millä tavalla vaan, servon ohjaus onnistuu.

Kolvikin pysyy kädessä ja jonkinverran elektroniikasta kokemusta.

Nyt tuntui että olisi vähän apua tarpeen, jotenkin ei mene jakeluun tuon lämpöanturin lukeminen.  
(TCN75A [robomaa.com/index.php?main\_p … ucts\_id=73](http://www.robomaa.com/index.php?main_page=product_info&cPath=7_19&products_id=73))

Kytkin  
VCC = 5v  
GND = maa  
SCL = digital pin 2

Tulosti vuorontellen sattumanvaraisesti 1 ja 0.(Ilmeisesti jollakin koodilla muutetaan asteiksi…)  
Yritin koko eilenillan googletella ja etsiä tuolle anturille esimerkkikoodia, että pääsisi siitä kärryille ja pääsisi kehittelemään omia sovelluksia.

Tuosta kytkennästäkään en ole varma, onko oikein kytketty.

---

<div class="post-metadata">

### Author: ![lauri-old-account](https://f.ruuvi.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lauri-old-account](https://f.ruuvi.com/u/lauri-old-account)
#### Post date: [12 October 2010 08:53 UTC](https://f.ruuvi.com/t/arduino-ja-tcn75a/1395/2 "2010-10-12T08:53:37Z")

</div>

Kannattaa aivan ensimmäisenä selata anturin datalehti läpi. Anturi näyttää käyttävän liikennöintiin I2C-väylää. Eli data siirtyy SDA:n läpi ja kello annetaan SCL:llä, yeensä I2C:n kellona on 100 kHz tai 400 kHz. Ihan hyvä tutoriaali I2C:stä löytyy tuolta:

[robot-electronics.co.uk/acat … orial.html](http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html)

Luulisin, että tuossa anturipiirillä on ylösvetovastukset valmiina, joten niistä ei tarvinne huolehtia. Mikäli ei ole, niin sitten lisätään esim. 4,7 kilo-ohmin vastukset SDA- ja SCL-linjoihin yllä olevan tutoriaalin mukaisesti.

Arduinossa I2C:n käyttö on tehty aika helpoksi, siihen kannattaa hakea tietoa täältä:

[arduino.cc/playground/Learning/I2C](http://www.arduino.cc/playground/Learning/I2C)

Mikäli näillä avuilla alkaa pelaamaan, niin hieno juttu. Mikäli ei, niin saa kysellä tietysti lisää 😉

Edit: Löytyi vielä tällainen tieto Arduinon Wire-kirjastosta:

> [@](#):
>
> “Wire library will enable ATMEL internal Pullup’s. So using additional pullup’s with a short bus may not be required, for example interface only a single nearby EEPROM.”

---

<div class="post-metadata">

### Author: ![karvainen](https://f.ruuvi.com/letter_avatar_proxy/v4/letter/k/dc4da7/32.png) [@karvainen](https://f.ruuvi.com/u/karvainen)
#### Post date: [16 October 2010 13:08 UTC](https://f.ruuvi.com/t/arduino-ja-tcn75a/1395/3 "2010-10-16T13:08:48Z")

</div>

Ei tahdo mennä jakeluun, olen testaillut sataa eri koodia 😃

Kytketty:  
vcc +5  
gnd maa  
sda = analocg in 4  
scl =analocg in 5

Koodi mikä tällä hetkellä testissä

Ei oikeen yksinkertasta esimerkkikoodia löytynyt…

[code]#include “Wire.h”  
//wire library

#define address 0x4F  
//address of the temperature sensor

#define delayC 1000  
//delay count in ms

#define baudrate 9600  
//baudrate for communication

void setup()  
{  
Wire.begin();  
Serial.begin(baudrate);  
}

void loop()  
{  
Serial.print("temperature in Celsius: ");  
//let’s signal we’re about to do something

int temperature;  
//temperature in a byte

Wire.beginTransmission(address);  
//start the transmission

Wire.send(0x00);

Wire.requestFrom(address, 1);  
if (Wire.available()) {  
temperature = Wire.receive();  
Serial.println(temperature);  
} else {  
Serial.println("—");  
}

Wire.endTransmission();  
//end the transmission

delay(delayC);  
}[/code]

Tulostaa vaan.  
temperature in Celsius: —  
temperature in Celsius: —  
temperature in Celsius: —  
temperature in Celsius: —

---

<div class="post-metadata">

### Author: ![jarani](https://f.ruuvi.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jarani](https://f.ruuvi.com/u/jarani)
#### Post date: [9 January 2011 21:49 UTC](https://f.ruuvi.com/t/arduino-ja-tcn75a/1395/4 "2011-01-09T21:49:31Z")

</div>

Mistä tiedät että sinun laitteen osoite on tuo määrittelemäsi:  
#define address 0x4F ?

Itse muokkailin löytämistäni koodiesimerkeistä seuraavanlaisen joka ainakin tuntuisi reagoivan tuon anturin hypistelyyn (lämpötilavaihteluun):

```auto
/* */
/* A6 A5 A4 A3 A2 A1 A0 */
/* TCN75A osoite 1 0 0 1 x x x */
/* A0 - A2 LSB, user selectable bits */
/* Arduino analog input 5 - I2C SCL */
/* Arduino analog input 4 - I2C SDA */

#include <Wire.h>
int mittaus = 0;

void setup()
{
  Wire.begin();
  Serial.begin(115200);
}

void loop()
{
  Wire.beginTransmission(0x48); /* anturin osoite 0x48 : 1001000 */
                            /* koska anturin A2, A1 ja A0 liittimet ovat irti */
  Wire.requestFrom(0x48, 2);

 if(2 <= Wire.available())
  {
    mittaus = Wire.receive();
    Serial.print("Lampotila : ");
    Serial.println(mittaus);  
    mittaus = 0; /* mittaustulos nollaan */
  }
  Wire.endTransmission(); 
  delay(3000);
}
```
