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)
Druckbare Version
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)
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.
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
HI
@Hubert.G
irgendwie will es nicht klappen!
hier ein teil des Programmes zumindest die nötigen sachen.
@vohopriCode:#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;
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.
Ich kann da keinen Fehler entdecken. Was funktioniert nicht ?
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
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.
Jetzt die Warnings mal beiseite gelassen, wo deklarierst du denn x und y.
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?
Ich hab es jetzt.
Leider schreibt er mir statt die Füllzeichen andere möglichen zeichen rein
Was heißt eigentlich PROGMEM ={"0"," "," "," "," "}; ?????