Pages: 1 [2]   Go Down
Author Topic: Arduino Temperaturmessung mit KTY81-120  (Read 2554 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nein ich habe eine selbst erstellte Platine und da sind die Pins 4, 11, 12 und 13 in Benutzung. Und mit dem KTY hat es ja auch funktioniert.  Ich versuchs eben nochmal mit einem anderen Pin! Kann man dafür auch einen Analogen Pin verwenden?

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe jetzt nochmal andere Pins benutzt und bei allen das gleiche
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß nicht warum es auf einmal funktioniert aber das tut es jetzt smiley.

Ich habe den Sensor jetzt auf Pin 9 gelegt und jetzt passt es. hab vorhin aber schon einmal andere Pins benutzt und da hat es nicht geklappt. Naja egal jetzt gehts!


Danke für eure Hilfe!


hier nochmal der Code:
Code:
#include <Wire.h>
#include <RTClib.h>
#include <OneWire.h>
#include <SD.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd( A2, A1, 6, 5, 2, 3 );
const int chipSelect = 4;
OneWire  ds(9);  // on pin 10
RTC_DS1307 RTC;

const int hoch = 7;      // Taster für Hochzählen defenieren
const int runter = 8;    // Taster für Runterzählen defenierern
int l = 0;
double Wert  = 1;         // Wert = Fließkommazahl

void setup()
{
  lcd.begin(16,2);
  pinMode ( hoch, INPUT );
  pinMode ( runter, INPUT );
  digitalWrite ( hoch, HIGH );
  digitalWrite ( runter, HIGH );
  Wire.begin();          //RTC
  RTC.begin();           //RTC
 
  lcd.print("Init SD card...");
  delay( 500 );
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    lcd.print("Card failed");
    // don't do anything more:
    return;
  }
  lcd.print("card init.");
  lcd.clear();
  lcd.print("LOG: ");
  lcd.print(Wert);
  lcd.print("min.");
}

void loop()
{
  DateTime now = RTC.now();
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius;

  if ( !ds.search(addr))
  {
    ds.reset_search();
    delay(250);
    return;
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      return;
  } 
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      type_s = 1;
      break;
    case 0x28:
      type_s = 0;
      break;
    default:
      return;
  }
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end
 
  delay(750);     // 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

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();

  }
  // convert the data to actual temperature
  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }

  celsius = (float)raw / 16.0;
    lcd.setCursor ( 0,1 );
    lcd.print("Temp.: ");
    lcd.print(celsius,1);
    lcd.print(0xDF,BYTE); // 0xDF, BYTE geht nur für LCD
    lcd.print("C");
   
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(celsius);
    dataFile.close();
  } 
  if (dataFile)
  {
    dataFile.close();
  } 
   File dataFile2 = SD.open("Time.txt", FILE_WRITE);   // Zeit in Datei schreiben
  // if the file is available, write to it:
  if (dataFile2) {
    dataFile2.print(now.hour(),DEC);
    dataFile2.print(".");
    dataFile2.print(now.minute(),DEC);
    dataFile2.print(".");
    dataFile2.println(now.second(),DEC);
    dataFile2.close();
  }
  for ( l = 0; l <= Wert * 590; l++ )
{
  // Taster für Hochzählen abfragen
  if ( digitalRead ( hoch ) == LOW )
  {
    Wert += 1.0f;
    lcd.clear();
    lcd.print ( "Log: " );
    lcd.print ( Wert );
    lcd.print ( " min." );
    // Entprellung
    while ( digitalRead ( hoch ) == LOW ) {}
    }
   // Taster für Runterzählen abfragen
   if ( digitalRead ( runter ) == LOW )
    {
    Wert -= 1.0f; // zählt in 0,1'ner schritten hoch
    lcd.clear();
    lcd.print ( "Log: " );
    lcd.print ( Wert );
    lcd.print ( " min." );
    // Entprellung
    while ( digitalRead ( runter ) == LOW ) {}
    }
    delay ( 100 );
 }
}

Gruß
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Schön, dass es funktioniert. Ich würde das Ganze zur besseren Lesbarkeit noch strukturieren, indem ich für separate Vorgänge Funktionen anlege. Eine Funktion für das Auslesen der RTC, eine zum Auslesen des Temperaturwertes, eine zum Schreiben auf SD-Karte, eine zur Anzeige auf dem LCD. Zur Veranschaulichung bzw. Orientierung , wie das mit den Funktionen läuft, habe ich in meinem Uhren-Thread ein bisschen Quellcode zu stehen: http://arduino.cc/forum/index.php/topic,88238.45.html Hier sieht man, dass dadurch die loop() quasi selbsterklärend wird.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank smiley!

Das wollte ich eig. auch von Anfang an machen, aber da ich nicht genau wusste wie das funktioniert hab ich das erstmal sein gelassen!

Aber das werde ich gleichmal versuchen um zu setzen und mich ein wenig in dem Thread belesen!!!!

Besten Dank und euch allen ein schönen sonnigen Tag smiley

Gruß
Logged

Pages: 1 [2]   Go Up
Jump to: