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
Sad Hilfe bei 2.4 TFT Display Harry Hirsch 40 1.438 22.04.2018 15:34
Letzter Beitrag: Tommy56
  hilfe bei callback ausgabe per knopfdruck merz 5 175 15.04.2018 14:16
Letzter Beitrag: Tommy56
  Hilfe bei Fehlermeldung TroyPan 3 291 23.03.2018 23:38
Letzter Beitrag: Tommy56
  Hilfe beim skript Devtris 24 1.193 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe bei einen kleinen Programm FPV 9 832 11.03.2018 20:42
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 1.410 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 245 10.03.2018 11:44
Letzter Beitrag: hotsystems
  Hold Button - Doppel Klick Hilfe GSA1150 8 578 08.03.2018 16:24
Letzter Beitrag: Tommy56
  Brauch hilfe bei einnem Sketch MrMagoo 10 556 11.02.2018 13:49
Letzter Beitrag: hotsystems
  Hilfe bei diesen Fehler MrMagoo 22 950 06.02.2018 20:03
Letzter Beitrag: hotsystems

Gehe zu:


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