- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 45

Thema: Temperatur verarbeiten über Analog

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Anzeige

    Powerstation Test
    Hi

    Ich habe die Variablen x und y als int. Diese habe ich statt VWert1 eingesetzt, wie du beschrieben hast.
    Leider funzt es nicht folgende fehlermeldungen bekomme ich (siehe bild)
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fehler_946.gif  

  2. #22
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Du brauchst da noch zwei Include:
    #include <string.h>
    #include <avr/pgmspace.h>
    Wenn es trotzdem nicht klappt, dann müsstest du mal den gesamten Codeteil posten.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #23
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo wof,

    wieso subtrahierst du nicht 1000 dann, wenn die Tausenderstelle stört.
    Die Modulofunktion kann das auch, wenn sie zur Verfügung steht.

    grüsse,
    Hannes

  4. #24
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    HI

    @Hubert.G
    irgendwie will es nicht klappen!
    hier ein teil des Programmes zumindest die nötigen sachen.



    Code:
    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/pgmspace.h> //String im Flash belassen
    #include "lcd.h"
    #include <util/delay.h>
    #include <string.h> 
    
    #include <inttypes.h>
    
    
    
    /*
    ** constant definitions
    */
    static const PROGMEM unsigned char copyRightChar[] =
    {
    	0x07, 0x08, 0x13, 0x14, 0x14, 0x13, 0x08, 0x07,
    	0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00
    };
    
    
    
    // die Funktion "Verzögerung" ins Programm einbringen
     
    void delay_ms(uint16_t ms)
    {
    
    	for(uint16_t t=0; t<=ms; t++)
    		_delay_ms(1);
    }
    
    
    
    
    
    
    
    
    int main(void)
    {
    
    
    
    uint16_t readADC(uint8_t channel) 
    {
    	uint8_t i;
    	uint16_t result = 0;
    
    	
    	// Den ADC aktivieren und Teilungsfaktor auf 64 stellen
    	ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);
    
    	// Kanal des Multiplexers waehlen
    	ADMUX = channel;
    	// Interne Referenzspannung verwenden (also 2,56 V)
    //	ADMUX |= (1<<REFS1) | (1<<REFS0);
    
    	//AVCC als Referenzspannung verwenden
       ADMUX |= (1<<REFS0); 
    	
    	// Den ADC initialisieren und einen sog. Dummyreadout machen
    	ADCSRA |= (1<<ADSC);
    	while(ADCSRA & (1<<ADSC));
    	
    	// Jetzt 3x die analoge Spannung and Kanal channel auslesen
    	// und dann Durchschnittswert ausrechnen.
    	for(i=0; i<4; i++) {
    		// Eine Wandlung
    		ADCSRA |= (1<<ADSC);
    		// Auf Ergebnis warten...
    		while(ADCSRA & (1<<ADSC));
    		
    		result += ADCW;
    	}
    	
    	// ADC wieder deaktivieren
    	ADCSRA &= ~(1<<ADEN);
    	
    	result /= 4;
    	
    
    	return result;
    }
    
    
    
    
    
    
    
    
    
       
       
    char fuellzeichen[5][6]PROGMEM ={"0"," ","  ","   ","    "};/* Texte für die LCD-Ausgabe im Flash*/
    
    if (strlen(x) ==4){
       lcd_puts_p(fuellzeichen[1]);
       }
       else if(strlen(y) ==3){
       lcd_puts_p(fuellzeichen[2]);
       }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    //Variablen deklarieren
    
        char Out[80];
        char buffer[20];
    	int setup_zeit = 180;
    	int setup_temp = 50;
        int bild_aufruf = 0;
    	int ist_zeit = 0;
    	int ist_temp = 0;
    	int summer = 0;
    	int automatik_betrieb = 0;
    	int y = 0;
    	int x = 0;
    	int z = 0;
    @vohopri
    wenn ich ständig -1000 rechnen würde dann bekomme ich ja nie die tausender stelle.
    Die stelle soll vorhanden sein wenn die Zah über tausend ist und wenn es unter tausend fällt wird sie halt nicht automatisch gelöscht.
    MfG:P

    Woftschik

  5. #25
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich kann da keinen Fehler entdecken. Was funktioniert nicht ?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #26
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo wof,

    das hast du völlig richtig erkannt. Darum habe ich auch nicht von "ständig subtrahieren" geschrieben, sondern "wenn die Tausenderstelle stört".

    Dass du selbständig das "wenn" in ein "if" umsetzen kannst, hätte ich eigentlich schon erwartet.

    grüsse,
    Hannes

  7. #27
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    HI!!

    @Hubert.G
    Ich weiß nicht was da nicht genau funktioniert. Wenn ich diese Zeilen ausklammere dann funktioniert das. Fehlermeldungen vom Compiler siehe Bild.

    Code:
    char fuellzeichen[5][6]PROGMEM ={"0"," ","  ","   ","    "};/* Texte für die LCD-Ausgabe im Flash*/
    
    if (strlen(x) ==4){
       lcd_puts_p(fuellzeichen[1]);
       }
       else if(strlen(y) ==3){
       lcd_puts_p(fuellzeichen[2]);
       }

    vielleicht stimmt da was mit der Schreibweiße nicht?


    @vohopri
    Danke! Hatte das auch vorher so gehabt mit dem "if" ,nur ist es nicht unbedingt die eleganteste Lösung.
    Wenn dieser Code oben von Hubert.G funktionieren wird, das nenne ich dann eine elegante Lösung.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fehler_1.gif  
    MfG:P

    Woftschik

  8. #28
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Jetzt die Warnings mal beiseite gelassen, wo deklarierst du denn x und y.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  9. #29
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Jetzt habe ich verstanden.
    Die Variablen Deklaration war nach diesen Zeilen die du mir gegeben hast.
    Jetzt habe ich sie auscgeschnitten und oben eingefügt, kein Compiler fehler mehr. Aber irgendwie werden mir die"unnötigen" Zahlen der Variablen X und Y nicht gelöscht.
    Muss ich da noch was einfügen?

  10. #30
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Ich hab es jetzt.
    Leider schreibt er mir statt die Füllzeichen andere möglichen zeichen rein
    Was heißt eigentlich PROGMEM ={"0"," "," "," "," "}; ?????

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress