|
|
Rad 3: |
Rad 3: |
| '''DS18S20 Temperature chip | | '''DS18S20 Temperature chip |
| ''' | | ''' |
| == Koppling ==
| |
| Connect the signal to Arduino digital 10, and open serial port monitor:
| |
|
| |
|
|
| |
|
| == Arduino exempelkod == | | == Om sensorn == |
| | Shock är en stötsensor som skickar ut HIGH på signalstiftet när den får en stöt/vibration |
|
| |
|
| <pre>
| | == Synonymer == |
| | KEYES Shock Module, KY002, Hit sensor module, 02 ARDUINO vibration switch module |
|
| |
|
| | == Koppling == |
|
| |
|
| #include
| |
|
| |
|
|
| | == Arduino exempelkod == |
| | |
| /* DS18S20 Temperature chip i/o
| |
| | |
|
| |
| | |
| */
| |
| | |
|
| |
| | |
| OneWire ds(10); // on pin 10
| |
| | |
|
| |
| | |
| void setup(void) {
| |
| | |
| // initialize inputs/outputs
| |
| | |
| // start serial port
| |
| | |
| Serial.begin(9600);
| |
|
| |
|
| | <pre> |
| | int LED = 13 ;// define LED pin |
| | int SENSOR = 2; // sensor pin |
| | int val ; // define numeric variable val |
| | void setup () |
| | { |
| | pinMode (LED, OUTPUT) ; // define LED as output |
| | pinMode (SENSOR, INPUT) ; // define SENSOR as input |
| } | | } |
| | | void loop () |
|
| | { |
| | | val = digitalRead (SENSOR) ;// read SENSOR and put it into val |
|
| | if (val == HIGH) // When the sensor detects a signal, LED flashes |
| | | { |
|
| | digitalWrite (LED, LOW); |
| | | } |
| void loop(void) { | | else |
| | | { |
| byte i;
| | digitalWrite (LED, HIGH); |
| | | } |
| byte present = 0;
| |
| | |
| byte data[12];
| |
| | |
| byte addr[8];
| |
| | |
| int Temp;
| |
| | |
| if ( !ds.search(addr)) {
| |
| | |
| //Serial.print("No more addresses.n");
| |
| | |
| ds.reset_search();
| |
| | |
| return;
| |
| | |
| }
| |
| | |
|
| |
| | |
| Serial.print("R="); //R=28 Not sure what this is
| |
| | |
| 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] != 0x28) {
| |
| | |
| Serial.print("Device is not a DS18S20 family device.n");
| |
| | |
| return;
| |
| | |
| }
| |
| | |
|
| |
| | |
| ds.reset();
| |
| | |
| ds.select(addr);
| |
| | |
| ds.write(0x44,1); // start conversion, with parasite power on at the end
| |
| | |
|
| |
| | |
| delay(1000); // 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(" ");
| |
| | |
| } | | } |
|
| |
| Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature
| |
|
| |
|
| |
|
| |
| Temp=Temp>>4;//divide by 16 to get pure celcius readout
| |
|
| |
|
| |
|
| |
| //next line is Fahrenheit conversion
| |
|
| |
| Temp=Temp*1.8+32; // comment this line out to get celcius
| |
|
| |
|
| |
|
| |
| Serial.print("T=");//output the temperature to serial port
| |
|
| |
| Serial.print(Temp);
| |
|
| |
| Serial.print(" ");
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| Serial.print(" CRC=");
| |
|
| |
| Serial.print( OneWire::crc8( data, 8), HEX);
| |
|
| |
| Serial.println();
| |
|
| |
| }
| |
|
| |
| </pre> | | </pre> |
|
| |
|