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
  Brauch hilfe bei einnem Sketch MrMagoo 10 260 11.02.2018 13:49
Letzter Beitrag: hotsystems
  Hilfe bei diesen Fehler MrMagoo 22 489 06.02.2018 20:03
Letzter Beitrag: hotsystems
Question Hilfe bei Programmierung Niklas 15 502 02.02.2018 12:55
Letzter Beitrag: Niklas
  Neulig sucht Hilfe bei Programmierung der Spannungsprotokollierung Matej 42 1.899 01.02.2018 18:11
Letzter Beitrag: Matej
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 484 31.01.2018 21:14
Letzter Beitrag: Tommy56
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 2.503 10.11.2017 22:24
Letzter Beitrag: r4c3
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 520 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Hilfe bei Einschaltverzögerung gesucht Ingo 9 891 28.10.2017 19:04
Letzter Beitrag: Tommy56
  Wie wird bitte der Pin EN am HC05 gesetzt ? comfan 3 377 26.09.2017 16:34
Letzter Beitrag: Alfrede
Photo Hilfe bei meinem Arduino Projekt Niklas 10 850 23.09.2017 21:05
Letzter Beitrag: Niklas

Gehe zu:


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