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
24.07.2015, 10:05
Beitrag #33
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Ja, muß ich da noch mal drei Ausgänge für die zwei Schieberegister am Arduino progammieren? Hab im Moment keine Idee!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.07.2015, 10:15
Beitrag #34
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Entweder so, oder Du hängst die zwei für die Innentemperatur mit an die anderen dran. Dann musst Du die Funktion, die jetzt die Außentemperatur anzeigt, so ändern, dass sie auch die Innentemperatur kann.

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
26.07.2015, 16:01
Beitrag #35
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Hallo Torsten, ich hab es jetzt mal so gemacht:
Code:
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 displayNumber(int n)
{
int links, rechts=0;
if (n < 10)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[n]);
shiftOut(DATA, CLOCK, LSBFIRST, 0);
digitalWrite(LATCH, HIGH);
}
else if (n >= 10)
{
rechts = n % 10;
links = n / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[rechts]);
shiftOut(DATA, CLOCK, LSBFIRST, digits[links]);
digitalWrite(LATCH, HIGH);
}
}


void loop()

Ich bekomme auch keine Fehlermeldung. Was meinst du könnte das funktionieren?Dodgy
Will in den nächsten Tagen mal mein Steckboard um zwei Stellen erweitern und testen.
Gruß ottii....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2015, 17:20
Beitrag #36
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Nein, Du musst das schon in einem Rutsch rausschieben.

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
26.07.2015, 17:42
Beitrag #37
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
So bekomme ich wieder Fehler.
Verstehe soviel, dass da ein Konflikt ist. Aber wie ändern??????Huh
Code:
void displayNumber(int8_t n, int 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];

{
int links, rechts=0;
if (n < 10)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[n]);
shiftOut(DATA, CLOCK, LSBFIRST, 0);
digitalWrite(LATCH, HIGH);
}
else if (n >= 10)
{
rechts = n % 10;
links = n / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[rechts]);
shiftOut(DATA, CLOCK, LSBFIRST, digits[links]);
digitalWrite(LATCH, HIGH);
}

digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, right);
shiftOut(DATA, CLOCK, LSBFIRST, mitte);
shiftOut(DATA, CLOCK, LSBFIRST, left);
shiftOut(DATA, CLOCK, LSBFIRST, rechts);
shiftOut(DATA, CLOCK, LSBFIRST, links);

digitalWrite(LATCH, HIGH);
}
}
Fehler
Code:
Versuch2-innen-aussen.ino:8:34: error: conflicting declaration 'int n'
Versuch2-innen-aussen.ino:8:27: error: 'n' has a previous declaration as 'int8_t n'
Versuch2-innen-aussen.ino:21:34: error: conflicting declaration 'int n'
Versuch2-innen-aussen.ino:21:27: error: 'n' has a previous declaration as 'int8_t n'
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2015, 17:45
Beitrag #38
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Du kannst nicht beide Parameter "n" nennen. Benenne einfach mindestens einen um...

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
26.07.2015, 18:11
Beitrag #39
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Hab´s VersuchtHuh
hier mal der Komplette Sketch:
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); // Required for DR3100  
  vw_set_rx_pin(2);  //Orginal pin 15
  vw_setup(5000); // Bits per sec  
  vw_rx_start();
}



void displayNumber(int8_t n, int b)
{
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];

{
int links, rechts=0;
if (b < 10)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[n]);
shiftOut(DATA, CLOCK, LSBFIRST, 0);
digitalWrite(LATCH, HIGH);
}
else if (b >= 10)
{
rechts = b % 10;
links = b / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[rechts]);
shiftOut(DATA, CLOCK, LSBFIRST, digits[links]);
digitalWrite(LATCH, HIGH);
}

digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, right);
shiftOut(DATA, CLOCK, LSBFIRST, mitte);
shiftOut(DATA, CLOCK, LSBFIRST, left);
shiftOut(DATA, CLOCK, LSBFIRST, rechts);
shiftOut(DATA, CLOCK, LSBFIRST, links);

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  
      displayNumber(temp);
    }
   //temp=temp - 0;  
    
  Serial.println("");      
    if(buf[0]=='1')
  {  
    digitalWrite(17,1);  //blink with active rf link
    }      
    if(buf[0]=='0')  
    {  
    digitalWrite(17,0);  
  
    delay(1000);
  }}  
    
  
float temperature = getTemp();
Serial.println(temperature);
displayNumber(temperature);
delay(100); //just here to slow down the output so it is easier to read

}

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;

}
Fehler:
Code:
Versuch1-inen-aussen.ino: In function 'void loop()':
Versuch1-inen-aussen.ino:87:25: error: too few arguments to function 'void displayNumber(int8_t, int)'
Versuch1-inen-aussen.ino:28:6: note: declared here
Versuch1-inen-aussen.ino:106:26: error: too few arguments to function 'void displayNumber(int8_t, int)'
Versuch1-inen-aussen.ino:28:6: note: declared here

Ich hab n einfach in b umbenannt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2015, 18:28
Beitrag #40
RE: Funkthermometer mit 7 Segmentanzeige-bitte um Hilfe
Wenn eine Funktion zwei Argumente hat, dann musst Du sie auch mit zweien aufrufen...

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
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 117 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 230 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 247 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 284 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 447 22.08.2016 08:07
Letzter Beitrag: b3ta
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 178 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 536 06.07.2016 14:59
Letzter Beitrag: Binatone
  Hilfe beim Arduino Shield reimundko 6 453 05.06.2016 11:28
Letzter Beitrag: rpt007
Smile Datum Anzeige mit 7 Segmentanzeige ottii50 11 895 16.05.2016 19:12
Letzter Beitrag: Mathias
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 526 23.04.2016 10:26
Letzter Beitrag: rkuehle

Gehe zu:


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