INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 1 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
21.07.2015, 08:27 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2015 08:54 von ottii50.)
Beitrag #17
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Ich hab jetzt mal die Werte im Sender und Empfänger auf den seriellen Monitor anzeigen lassen
Sender:
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
" Serial.print(msg); " der Wert 25.50
delay(200);

Empfänger:
char temp=0;
for (int i = 0; i < buflen; i++)
{
temp=(char)buf[i];
" Serial.print(temp); " der Wert 25.50

Ich hoffe, dass es so richtig ist Exclamation

Die Anzeige will aber immer noch nichtHuhHuhHuh

Hallo Thorsten, ich glaube es liegt wieder an der Übertragung der Bytes.
Ich hab den Sketch mal versucht umzuschreiben, bekomme aber nur Fehler angezeigt.
PHP-Code:
#include <VirtualWire.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 7

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature Sensor(&oneWire);

char msg[6];

const 
int LED 13;
const 
int TX 3;

void setup() {
// Comunicacao com o Serial Monitor
Serial.begin(9600); // baud-rate
Serial.println("Transmissor");
Sensor.begin();
// Inicializando E/S do transmissor
vw_set_tx_pin(TX);
vw_set_ptt_inverted(true); // Requerido para DR3100
vw_setup(5000); // Bits por segundos
}

void loop() {
Sensor.requestTemperatures();

float temperature Sensor.getTempCByIndex(0);

dtostrf(temperature62msg);

Serial.print(msg);
Serial.println(" *C");
delay(1000);

// Funcoes para transmissao

//Lendo e armazenando o valor da temperatura
// Convertndo int para char
char SensorCharMsg[10];
itoa(msgSensorCharMsg,10);

digitalWrite(LEDHIGH); // Pisca LED no pino 13 enquanto esta transmitindo
uint8_t tempAsByte msg;
vw_send(&tempAsByte1);
vw_wait_tx(); // Espera o envio da informacao
digitalWrite(LEDLOW);
delay(1000);

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.07.2015, 09:44
Beitrag #18
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Hi,
nein, so geht das nicht. Du wandelst die Temperatur in eine Zeichenkette und versuchst das dann als ein Byte zu übermitteln. Das ist natürlich Quatsch.
Da sinnvolle Temperaturen wahrscheinlich locker in 8 Bit passen könntest Du es so machen:
Code:
float temperature = Sensor.getTempCByIndex(0);

int8_t tempAsByte = temperature;
Serial.print(tempAsByte);
Serial.println(" *C");
delay(1000);

digitalWrite(LED, HIGH); // Pisca LED no pino 13 enquanto esta transmitindo
vw_send((unit8_t*)(&tempAsByte), 1);
vw_wait_tx(); // Espera o envio da informacao
digitalWrite(LED, LOW);
delay(1000);
}

Im Empfänger-Sketch musst Du dann auch int8_t als Datentyp verwenden.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.07.2015, 10:44
Beitrag #19
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Prima Thorsten, dass geht, DANKEExclamation
Hier war ein kleiner Schreibfehler:vw_send((unit8_t*)(&
habs aber gefunden.
Jetzt wird nichts im Seriellen Monitor ausgegeben. ist aber nicht so wichtig.
Mich interessiert jetzt noch wie ich das mit den 3 Stellen mache, so das auch zwei stellige Minustemperaturen angezeigt werden..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.07.2015, 17:04
Beitrag #20
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Hi,
ich hab jetzt mal mein Steckboard um eine Stelle erweitert.
Hab auch versucht den Sketch umzuschreiben, damit er die Stelle auch anzeigt.
Geht aber nichtAngry
Code:
void displayNumber(int n)
{
int left, mitte, right=0; // hier hab ich mitte eingefügt

if (n < 0)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[n * -1]);
shiftOut(DATA, CLOCK, LSBFIRST, 2);  // 2 muesste das Minuszeichen sein
digitalWrite(LATCH, HIGH);
} else if (n < 10)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[n]);
shiftOut(DATA, CLOCK, LSBFIRST, 0);
digitalWrite(LATCH, HIGH);
}
else if (n >= 10)
{
right = n % 10;  // und die drei Zeilen hab ich auch geändert
mitte = n % 10; //
left = n / 100;  //
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.07.2015, 17:17
Beitrag #21
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Code:
void displayNumber(int8_t n)
{
byte left = 0;
byte mitte = 0;
byte right = 0;
int8_t absN = n;
if(absN < 0) {
  left = 2;
  absN *= -1;
};
if(absN >= 10) {
  mitte = digits[absN / 10];
}else{
  mitte = left;
  left = 0;
};
right = digits[absN % 10];

digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, right);
shiftOut(DATA, CLOCK, LSBFIRST, mitte);
shiftOut(DATA, CLOCK, LSBFIRST, left);  
digitalWrite(LATCH, HIGH);
}

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.07.2015, 07:29
Beitrag #22
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Thorsten, ich bin begeistert. DankeExclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.07.2015, 19:07
Beitrag #23
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Hi, soweit alles prima.
ich hab jetzt gedacht noch zwei 7Seg. hinzuzufügen um die Innentemperatur mit anzuzeigen. Also hab ich noch einen DS18B20 an Pin 7 gelegt und die zwei Anzeigen mit den 595 versehen.
Aber beim versuch den Sketch so zu schreiben das er auch das macht was er soll gerate ich ins schwitzen und bekomme nur Fehler.
Gruß
ottii....

Code:
#define DATA 6
#define LATCH 8
#define CLOCK 10
#include <VirtualWire.h>
#include <OneWire.h>
int DS18B20_Pin = 7;
OneWire ds(DS18B20_Pin);

int digits[] = {252, 96, 218,242, 102, 182, 190, 224, 254, 246, 238, 62, 156, 122, 158, 142};
void setup()
{
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
Serial.begin(9600);
vw_set_ptt_inverted(true);
vw_set_rx_pin(2); //Orginal pin 15
vw_setup(5000); // Bits per sec
vw_rx_start();
}
void displayNumber(int8_t n)
{
byte left = 0;
byte mitte = 0;
byte right = 0;
int8_t absN = n;
if(absN < 0) {
left = 2;
absN *= -1;
};
if(absN >= 10) {
mitte = digits[absN / 10];
}else{
mitte = left;
left = 0;
};
right = digits[absN % 10];
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, right);
shiftOut(DATA, CLOCK, LSBFIRST, mitte);
shiftOut(DATA, CLOCK, LSBFIRST, left);
digitalWrite(LATCH, HIGH);
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
char temp=0;//mod:tim:added a temporary character
for (int i = 0; i < buflen; i++)
{
temp=(char)buf[i];//mod:tim:convert uint to char
Serial.print(temp); //mod:tim:changed buff[i] to temp here
}
Serial.println("");
if(buf[0]=='1'){
}
if(buf[0]=='0'){
}
float temperature = getTemp();
Serial.println(temperature);
}
float getTemp();
{
//returns the temperature from one DS18S20 in DEG Celsius
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
}
displayNumber(temperature);
displayNumber(temp);
delay(1000);
}}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.07.2015, 19:09
Beitrag #24
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Schreib doch mal, welche Fehler Du bekommst.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 1.971 10.11.2017 22:24
Letzter Beitrag: r4c3
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 387 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Hilfe bei Einschaltverzögerung gesucht Ingo 9 666 28.10.2017 19:04
Letzter Beitrag: Tommy56
  Wie wird bitte der Pin EN am HC05 gesetzt ? comfan 3 318 26.09.2017 16:34
Letzter Beitrag: Alfrede
Photo Hilfe bei meinem Arduino Projekt Niklas 10 583 23.09.2017 21:05
Letzter Beitrag: Niklas
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 1.442 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.654 11.07.2017 21:37
Letzter Beitrag: Customizer
  eine einfache Xor Bitte ? himbeersirup 1 413 08.06.2017 09:15
Letzter Beitrag: MicroBahner
  bitte, was ist "link GND" bergfrei 2 443 21.05.2017 15:14
Letzter Beitrag: bergfrei
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 2.538 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste