Hallo Zusammen
Ich habe da ein Problem:
Ich habe einen ATTiny84A-Pu den ich über einen Arduino Uno so programmieren möchte, dass dieser dann Daten von dem Temperatursensor DS18S20 auslesen und diese über ein nRf24l01+ Funkmodul an ein anderes senden kann. Schlussendlich sollen die Daten dann auf einem 4digit 7-Segment-Display ausgeben werden. Dies wird über einen MAX7219 angesteuert.
Kann mir da jemand helfen?
Ich habe bereits ein provisorisches Programm geschrieben, dass ohne die Funkmodule funktionieren würde:
#include <LedControl.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LedControl seg = LedControl (11, 13, 7, 1);
void setup()
{
Serial.begin(9600);
sensors.begin();
sensors.setResolution(9); //1 Nachkommastelle. Das ist aber schon Standard
seg.shutdown(0, false);
/* Set the brightness to a medium values */
seg.setIntensity(0, 8);
/* and clear the display */
seg.clearDisplay(0);
// Start up the library
}
void loop()
{
sensors.requestTemperaturesByIndex(0);
getDigits(sensors.getTempCByIndex(0));
delay (400);
}
void getDigits(float temp)
{
//abs(solute) entfernt evtl. negative Temperaturen.
//Ein Vorzeichen kann man zur Anzeige gesondert behandeln wenn man abfragt ob temp < 0 ist
int tempInt = (abs)(temp * 10);
byte tempFrac = tempInt % 10;
tempInt /= 10;
byte tempOne = tempInt % 10;
tempInt /= 10;
byte tempTen = tempInt % 10;
//print(float) formatiert standardmäßig auf 2 Nachkommastellen. Das ist nur eine Darstellungssache!
//, 1 heißt 1 Nachkommastelle. Hat mit dem eigentlich Wert in der Variable nichts zu tun
Serial.print(temp, 1);
Serial.print(" -- ");
if tempInt < 0
seg.setRow (0, 3, B00000001);
seg.setDigit (0, 2, tempTen, false);
seg.setDigit (0, 1, tempOne, true);
seg.setDigit (0, 0, tempFrac, false);
}
Vielen Dank für eure Hilfe
techniclover