Hallo Liebes Forum,
Da ich mich Zukünftig mehr mit dem Attiny85 auseinandersetzen möchte gerade im Batteriebetrieb, habe ich für den Attiny85 ein Sketch geschrieben, der der die Interne Referenz-Spannung misst und ohne ein HC-12 Modul über die direkte Serielle Kommunikation an den Arduino UNO sendet, für diesen habe ich einen Sketch geschrieben, der das vom Attiny85 liest und am Ser Mon anzeigt.
Nun habe ich das Problem, das die Darstellung auf den Ser Mon ganz oft nicht funktioniert und nur selten etwas brauchbares im Ser Mon steht.
Wenn jemand eine Lösung hat, wie ich das Problem angehen könnte Ware ich sehr dankbar.
ich könnte das zwar mit einem HC-12 machen wie in Vergangenheit auch, aber das wäre übertrieben und für das Messen der internen Referenzspannung überdimensioniert. Da ich auch die Möglichkeit zum Messen haben möchte ohne ein HC-12 als Kommunikation nutzen zu müssen. Ich habe es bereits schon mit anderen pinbelegungen für RX und TX probiert.
Der Attiny85 Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 3); // RX = 4, TX = 3
const float VCC = 4.86; // Gemessen in Volt!
void readInternalRef11()
{
ADCSRA |= _BV(ADSC); // Start Umwandlung
while (bit_is_set(ADCSRA,ADSC)); // Messen
uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both
long result = (high<<8) | low;
float rvcc = 1.10 * 1024L / result;
float internal1_1Ref = 1.1 * VCC / rvcc;
mySerial.println(internal1_1Ref);
}
void setup()
{
mySerial.begin(9600); // Starte die serielle Kommunikation mit dem Arduino über SoftwareSerial
delay(100); // Kurze Verzögerung für die Stabilisierung von SoftwareSerial
// Initialisiere ADC mit REFS[2:0] ist 0 = VCC als Ref, MUX[3:0] 1100 = Vbg als Input,
ADMUX = _BV(MUX3) | _BV(MUX2);
delay(10);
}
void loop() {
readInternalRef11();
delay(1000);
}
Der Code für Arduino UNO:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 3); // RX, TX am HC-12 (anpassen, je nach Verkabelung)
void setup() {
Serial.begin(9600);
mySerial.begin(9600); // Beginne die serielle Kommunikation mit dem ATtiny85
}
void loop()
{
if (mySerial.available() > 0) // Überprüfe, ob Daten verfügbar sind
{
String receivedData = mySerial.readString(); // Lies die empfangenen Daten
Serial.print("Interne Referenz: (1.1V), Tatsächliche Referenz: ");
Serial.println(receivedData);
}
}
EDIT:
Könnte es sein das diese Zeile probleme macht?
if (mySerial.available() > 0) // Überprüfe, ob Daten verfügbar sind