1 | /*Temperatursensor DS1722*/
|
2 |
|
3 |
|
4 | #include <SPI.h>
|
5 |
|
6 | int slaveselect = 10; //Pin 2 CE
|
7 | int dataout = 11; //Pin 5 SDO
|
8 | int datain = 12; //Pin 6 SDI
|
9 | int clock = 13; //Pin 3 SCLK
|
10 |
|
11 | const byte RESOLUTION_12BIT = 0b11101110;
|
12 | const byte CONFIG_WRITE_ADDRESS = 0x80;
|
13 | const byte CONFIG_READ_ADDRESS = 0x00;
|
14 |
|
15 | const byte TEMP_MSB_REG = 0x02;
|
16 | const byte TEMP_LSB_REG = 0x01;
|
17 |
|
18 | byte temperaturLOW;
|
19 | byte temperaturHIGH;
|
20 |
|
21 | int i;
|
22 | void setup(){
|
23 | Serial.begin(9600);
|
24 | pinMode(slaveselect, OUTPUT);
|
25 | pinMode(clock, OUTPUT);
|
26 |
|
27 | SPI.begin();
|
28 | SPI.setDataMode(SPI_MODE1);
|
29 | /*
|
30 | MODE CPOL CPHA
|
31 | 0 0 0
|
32 | 1 0 1
|
33 | 2 1 0
|
34 | 3 1 1
|
35 | */
|
36 |
|
37 | SPI.setClockDivider(SPI_CLOCK_DIV64);
|
38 | SPI.setBitOrder(MSBFIRST);
|
39 |
|
40 | delay(1000);
|
41 |
|
42 | setRegister(CONFIG_WRITE_ADDRESS, RESOLUTION_12BIT);
|
43 |
|
44 | delay(1000);
|
45 | }
|
46 |
|
47 | void setRegister(byte addresse, byte wert ){
|
48 | Serial.print("Adresse:");
|
49 | Serial.println(addresse, HEX);
|
50 |
|
51 | Serial.print("Wert:");
|
52 | Serial.println(wert, BIN);
|
53 |
|
54 | digitalWrite(slaveselect, HIGH); //SlaveSelect HIGH um Chip anzusprechen
|
55 | digitalWrite(clock, HIGH);
|
56 | delay(100);
|
57 | //Adresse und Wert via SPI übertragen:
|
58 | SPI.transfer(addresse);
|
59 | SPI.transfer(wert);
|
60 | digitalWrite(slaveselect, LOW); //SlaveSelect LOW um Chip abzuwählen
|
61 | delay(1000);
|
62 | }
|
63 |
|
64 |
|
65 | void readRegister(byte addresse) {
|
66 | byte Register = 0;
|
67 | Serial.print("Adresse:");
|
68 | Serial.println(addresse, HEX);
|
69 |
|
70 | Serial.print("Register Status:");
|
71 | digitalWrite(slaveselect, HIGH); //SlaveSelect HIGH um Chip anzusprechen
|
72 | digitalWrite(clock, HIGH);
|
73 | delay(100);
|
74 | SPI.transfer (addresse);
|
75 | Register = SPI.transfer(0x00);
|
76 | digitalWrite(slaveselect, LOW); //SlaveSelect LOW um Chip abzuwählen
|
77 |
|
78 | delay(1000);
|
79 | Serial.println(Register, BIN);
|
80 |
|
81 |
|
82 | }
|
83 |
|
84 | void loop() {
|
85 | readRegister(CONFIG_READ_ADDRESS);
|
86 | }
|