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
  Wie wird bitte der Pin EN am HC05 gesetzt ? comfan 2 76 16.09.2017 11:09
Letzter Beitrag: comfan
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 931 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.280 11.07.2017 21:37
Letzter Beitrag: Customizer
  eine einfache Xor Bitte ? himbeersirup 1 251 08.06.2017 09:15
Letzter Beitrag: MicroBahner
  bitte, was ist "link GND" bergfrei 2 311 21.05.2017 15:14
Letzter Beitrag: bergfrei
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 1.716 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 657 10.05.2017 21:04
Letzter Beitrag: MicroBahner
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.207 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Zeitschaltuhr Hilfe für RTC Anfänger 4Jordy 4 540 24.03.2017 15:23
Letzter Beitrag: MicroBahner
  Hilfe bei Taster huber5093 11 639 14.02.2017 19:26
Letzter Beitrag: Tommy56

Gehe zu:


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