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
  bitte, was ist "link GND" bergfrei 2 130 21.05.2017 15:14
Letzter Beitrag: bergfrei
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 844 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 314 10.05.2017 21:04
Letzter Beitrag: MicroBahner
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 803 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Zeitschaltuhr Hilfe für RTC Anfänger 4Jordy 4 232 24.03.2017 15:23
Letzter Beitrag: MicroBahner
  Hilfe bei Taster huber5093 11 429 14.02.2017 19:26
Letzter Beitrag: Tommy56
  DHT22 min max Temperatur 7-Segmentanzeige bastelbert 50 1.840 14.01.2017 11:46
Letzter Beitrag: Tommy56
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 339 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 501 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 450 29.08.2016 18:59
Letzter Beitrag: MKc

Gehe zu:


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