mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik aus Wert 1023 mach 25 Minuten BASCOM


Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der ADC gibt ja nen Wert von 0 - 1023 aus. Nun möchte ich daraus 
die Minuten errechnen nach einer fixen Formel. Teile ich 1023 durch 
0,682 erhalte ich 1500 Sekunde das sind durch 60 25 Minuten. Alles gut 
und schön, nur wenn z.B. der nicht 1023 ist erhalte ich auch mal 23,90 
MInuten oder so was natürlich nicht geht. Von daher wollt ich euch mal 
um Hilfe bitten

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, ist dann halt so... Was willst Du denn genau?! Sollen die Minuten 
gerundet werden?!

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst, dass du mit dieser "Fehlerbeschreibung" hier Hilfe bekommst?

Erklär mal, warum du einen ADC Wert in Minuten umrechnest. Ist da ne 
Analog-Uhr oder ein Kompass an deinem ADC dran, oder was? Und dass 5,5 
Minuten gleich 5 Minuten und 30 Sekunden (bezogen auf eine Uhrzeit) 
sind, muss dir wohl auch niemand erklären, oder?

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Will aus dem ADC ne Minuten Sekunden Anzeige machen.

Je nach Poti Stellung ne andere Dauer

Im ENteffekt 0 - 25 Minuten mit Sekunden

Autor: man oh man (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nette Mann schrieb:
> Teile ich 1023 durch
> 0,682 erhalte ich 1500 Sekunde das sind durch 60 25 Minuten. Alles gut
> und schön, nur wenn z.B. der nicht 1023 ist erhalte ich auch mal 23,90
> MInuten oder so was natürlich nicht geht.

Willst Du uns echt weiß machen, dass Du Sekunden in Minuten nicht 
umrechnen kannst???

23,90: 0,90 Minuten gibt es das? - Ja das ist 1 Minute * 90/100 => 60 
Sekunden * 90/100 = 54 Sekunden

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne eben net 0,9 = 90% von einer minute

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
90% von einer Minute sind 54 s...

Autor: man oh man (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nette Mann schrieb:
> ne eben net 0,9 = 90% von einer minute

Wieviel Sekunden dauert denn bei dir eine halbe Minute (0,5 Minuten)?

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
90% soviel Sekunden hat ja gar keine Minute.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mannomann...
Diesen Thread sollte man sich wirklich bookmarken und bei der nächsten 
"Bascom ist Blöde ... C aber auch"-Diskussion verlinken. So als Beweis 
dass es nicht an der Programmiersprache liegt (liegen muss)...

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sagst es.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Je nach Poti Stellung ne andere Dauer
>Im ENteffekt 0 - 25 Minuten mit Sekunden

25 * 60 = 1500 Stellungen mit einem 270° Poti?
Vergiss es, so genau stellst du vieleicht mit einem
guten 10 Gang Poti ein, aber nicht mit so nem Ding von der
Stange.

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dazu fällt mir irgendwie ein:

Die Wahrheit liegt im Auge des Betrachters ...

Autor: Julian O. (juliano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es nur in Sekunden zu arbeiten?

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist doch easy:

zahl/60 => minuten
zahl mod 60 => sekunden

dann einfach mal ausprobieren

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
irgendwie is der einzigste der mich einwenig versteht  didadu

kopf kratz

naja ich machs selber

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neben dem, was ich oben sagte, musst du mit DREISATZ rechnen.

du willst 0 ... 1023 auf 0 ... 25 Minuten abbilden.

25 minuten sind 25 * 60 = 1500 sekunden.

also, zahl1 (von 0...1023) umrechnen in zahl2 (0...1500):

zahl1 / 1023 * 1500 = zahl2

diese zahl2 verarbeitest du dann weiter wie ich oben sagte.

zahl1 / 1023 gibt etwas zwischen 0 und 1
das 0 bis 1 wandelst du mit dem * 1500 auf 0 ... 1500 um.

logisch? klaro?

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.

andere nehmen für sowas teurere drehencoder, die kompliziert 
programmiert werden müssen, oder machen sich dafür eine komplexe menü- 
und tastensteuerung.

diese lösung ist dagegen ganz direkt und einfach und billig.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  holger (Gast)

>25 * 60 = 1500 Stellungen mit einem 270° Poti?
>Vergiss es, so genau stellst du vieleicht mit einem
>guten 10 Gang Poti ein, aber nicht mit so nem Ding von der
>Stange.

Für sowas nimmt man heute einen Drehgeber. Digital, rustikal, 
universal ;-)

MfG
Falk

Autor: sdvyx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>andere nehmen für sowas teurere drehencoder, die kompliziert

Naja, ab 1,50 faellt bei mir nicht unter teuer.

Gast

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab noch so 8 mark im kopf :-)

und da darf man aber dann ganz schön für kurbeln, um den skalenbereich 
ganz durchzufahren

oder man hat nur ein paar schritte

oder oder
jedenfalls nicht einfach dreh und gut ists

praktische eieruhr, mit digitaler einstellungsanzeige

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  didadu (Gast)

>ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.

Ja, aber nicht für 1500 Stellungen auf 270 Grad. Macht theoretisch 0,18 
Grad / Schritt. Das ist nicht wirklich paraktikabel. Vor allem wenn der 
ADC nur 10 Bit Auflösung hat . . . ;-)

>andere nehmen für sowas teurere drehencoder, die kompliziert
>programmiert werden müssen,

Kompliziert? Keine Sekunde. Siehe Artikel Drehgeber.

>diese lösung ist dagegen ganz direkt und einfach und billig.

Billig ist das richtige Wort . . .

MFG
Falk

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
> und da darf man aber dann ganz schön für kurbeln, um den skalenbereich
> ganz durchzufahren

Nö.  Du must deine Schrittweite der Änderungsgeschwindigkeit der Impulse 
anpassen. Also wenn du schneller drehst muss du die Schrittweite grösser 
machen. So kannst du auch mit einem Drehgeber schnell grosse 
Wertebereiche durchlaufen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
> ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.
>
> andere nehmen für sowas teurere drehencoder, die kompliziert
> programmiert werden müssen, oder machen sich dafür eine komplexe menü-
> und tastensteuerung.
>
> diese lösung ist dagegen ganz direkt und einfach und billig.

Bist du das erste mal vor so einem Ding sitzt und versuchst 12 Minuten 
und 23 Sekunden genau einzustellen.

Dann weißt du plötzlich, warum man dafür kein Poti nimmt :-)

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also nochmal:

0 - 1023 Schritte
0 - 25 Minuten

1023 ist der erste gegeben Wert

1023 geteilt durch 0,682 ergibt 1500

25 Min = 1500 sekunden

Wert gegeben 827

827 / 0,682 = 1212,61 sekunden

1200 sec = 20 Minuten

1212,61 - 1200 = 12,61

Also sind es 20 Minuten und 13 Sekunden bei dem Wert 827

glaub ich zu mindest kopf kratz

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als meine Kinder in der Grundschule waren, habe ich schon Wert daruf 
gelegt, dass sie folgendes ausrechnen können.

In eine Apfelkiste passen 60 Äpfel.
Wenn du 2876 Äpfel hast, wieviele Kisten kannst du dann ganz anfüllen 
und wieviele Äpfel bleiben dir übrig.


Eine Mutter hat 60 Kinder und 278 Torten.
Wieviele Torten kriegt jedes Kind, wenn alle gleich viele bekommen, und 
wieviele bleiben übrig.


Auf einer Anzeige stehen 827 Sekunden
Wenn in 1 Minue 60 Sekunden passen, wieviele Minuten kann man dann voll 
machen und wieviele Sekunden bleiben übrig.

8-jährige können das lösen.

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und versuchst 12 Minuten und 23 Sekunden genau einzustellen

Und wenn der Skalenendwert größer ist als der ADC-Wertebereich, dann 
kann man noch nicht einmal alle Sekunden überhaupt treffen! Was für ein 
Drama!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
>> und versuchst 12 Minuten und 23 Sekunden genau einzustellen
>
> Und wenn der Skalenendwert größer ist als der ADC-Wertebereich, dann
> kann man noch nicht einmal alle Sekunden überhaupt treffen! Was für ein
> Drama!!

Genau
Das kommt dann nämlich auch mit dazu.
Erklär du doch mal deinem Benutzer warum er
0 3 5 8 12 15 17 21
Sekunden einstellen kann, aber zb keine 9, wo doch angeblich alles 
Vielfache von 3 sind.

Autor: Wayne Monga (vibra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin

eigentlich wäre es mir egal ob mein Frühstücksei 5min50sec oder 
6min10sec kocht , hauptsache ~6min

mfg

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sekunden = ADCwert / 1023 * 1500
minuten = 0
while sekunden > 60:
  minuten += 1
  sekunden -= 60

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so gehts auch grummel

danke

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 0 3 5 8 12 15 17 21

Naja, blöder ist's wohl eher, dass die Zahlenfetischisten nicht den 
psychologisch wichtigen Wert (Börsenspeak) von 3min0 oder 4min0 
einstellen können.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
> sekunden = ADCwert / 1023 * 1500
> minuten = 0
> while sekunden > 60:
>   minuten += 1
>   sekunden -= 60


Das ist jetzt aber kein BASCOM, oder?

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> so gehts auch

Ja, aber mit mod wäre doch eleganter.
Ich weiß aber nicht, wie die modulo-Funktion in Bascom heißt.
Es wäre dann sowas wie:

sekundengesamt = ADCwert / 1023 * 1500
minuten = integer(sekundengesamt / 60)
sekunden = sekundengesamt mod 60

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist jetzt aber kein BASCOM, oder?

Sieht eher aus wie python :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
>> so gehts auch
>
> Ja, aber mit mod wäre doch eleganter.

Im Prinzip stimme ich dir zu.
Allerdings ist die Divisions/Modulo Lösung höchst wahrscheinlich 
laufzeitmässig der Subtraktionsmethode unterlegen. Und zwar deutlich 
unterlegen.

Wenn du 8982367823923423589 Sekunden auf Minuten und Sekunden umrechnen 
müsstest (also hinreichend viele Subtraktionen hättest)  siehts anders 
aus. Aber maximal 25 Subtraktionen - das wird eng für Division / Modulo.


Wenn Laufzeitmässig keine Rolle spielt, ist Division/Modulo ok. Wenn die 
Laufzeit aber klein gehalten werden soll/muss ist es in diesem Fall 
besser zu subtrahieren.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
iuch bleib erma bei der geteilt extra - runden fertig

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich im Prinzip auch so.

Wobei die Hürde meiner Lösung darin liegt, dass möglicherweise die 
Zahlentypen die Sache mit der Division und der Multiplikation 
erschweren.

Besser wäre wohl, sofern man mit Integern rechnet, zu schreiben:

1500 * ADCwert / 1023


Übrigens heißt Modulo in Python nicht mod sondern %. Ist also eine 
Fantasiesprache gewesen.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nette Mann
ohne da jetzt zu tief einsteigen zu wollen, aber die Bascom-Befehle
FUSING oder FORMAT sind nicht zufällig das was du suchst...?

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kam ich nie zu recht weil das in der hilfe für unverständlich 
geschrieben ist

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
>> andere nehmen für sowas teurere drehencoder, die kompliziert
> ich hab noch so 8 mark im kopf :-)
Na, wenigstens etwas ;-)

> und da darf man aber dann ganz schön für kurbeln, um den skalenbereich
> ganz durchzufahren
Sieh dir doch mal an, wie andere das machen. Sehr gut bewährt hat sich 
z.B. bei Mauszeigern eine dynamische Anpassung der Geschwindigkeit. Und 
genauso kann man das mit Drehencodern machen. Zum Beispiel so:
Langsam drehen --> Einer-Incremente (oder hier: Sekunden)
Schnell drehen --> Zehner-Incremente (oder hier: Minuten)

Und sag mir keiner, dass das kompliziert sein muß:
http://www.lothar-miller.de/s9y/categories/54-Encoder

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Na, wenigstens etwas ;-)

Gut, dass wenigstens ein paar intelligente Leute hier sind!

Schön gemacht, Deine Homepage!

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Mir ist's ehrlic gesagt egal, was mit einem Poti eingestellt werden 
soll, aber es scheint niemandem aufgefallen zu sein, das der Teiler 
falsch ist. 0-1023 sind 1024 Schritte. Ja ich weiß, ich bin pingelig und 
wenn's hier keine Rolle spielt, es gibt vielleicht mal eine Anwendung, 
wo's wichtig ist. Immer dran denken, die 0 ist auch eine Zahl. Wir 
fangen immer bei 1 an, daher zählen wir bis 1024 ! Also, der Teiler ist 
und bleibt 1024.
Klaro ?
Gruß oldmax

Autor: Paul Baumann (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-Heinz Buchegger schrieb:
>Eine Mutter hat 60 Kinder und 278 Torten.
>Wieviele Torten kriegt jedes Kind, wenn alle gleich viele bekommen, und
>wieviele bleiben übrig.

....und dann kommen solche Themen zu Stande:
"Wie fett sind wir eigentlich?"
Beitrag "Off-Topic: Wie fett sind wir eigentlich ?"

:-)))

MfG Paul

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also, der Teiler ist und bleibt 1024. Klaro ?

Nö.
Wenn ich am Ende die 1 haben will, um auf die 1500 (25 Minuten 00) zu 
kommen, geht das mit der 1024, die den Wert 0...1023 IMMER unter 1 
bringt?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
> geht das mit der 1024, die den Wert 0...1023 IMMER unter 1
> bringt?

Ja. Dafür wurde die Addition erfunden. +1 und gut.

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss es so umständlich sein?

Und wie komme ich dann auf die 0?
(Sofern die benötigt wird, was nicht klar ist, da der OP sein Projekt 
selbst gar nicht genannt hat.)

Ich habe den Eindruck, hier besteht eine Verwechslung in Bezug auf 
offene und geschlossene Intervalle.
Und ein unreflektiertes Hinterherlaufen in vorgefertigten Bahnen.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
didadu schrieb:
> Muss es so umständlich sein?

Wenn du keinen Wert darauf legst, dass es richtig ist, nein. Bei 10Bit 
ist der Fehler den du dir dadurch einschleppst recht gering.
Ausserdem: aus µC-Sicht ist "1023" sehr umständlich, 1024 hingegen 
einfach.

didadu schrieb:
> Und ein unreflektiertes Hinterherlaufen in vorgefertigten Bahnen.

Vielleicht hilft dir ein kleines Gedankenexperiment weiter:

Eine Spannung von 0..1024 Volt wird mit einem ADC gemessen.

Hat der ADC nur 1 Bit, sagt dieses nur "kleiner 512 Volt" oder "größer 
512 V" aus. Also: bei gesetztem Bit kann die Spannung 1024 Volt 
betragen, sie muss es aber nicht.

Hat der ADC 2 Bit, würde "11" bedeuten: "größer 786 Volt", aber nicht 
"=1024 Volt"

4 Bit .. 9 Bit analog,

Bei 10 Bit dann: "1111111111"(1023) bedeutet: die angelegte Spannung ist 
größer als 1023 Volt. Es bedeutet nicht: Die Spannung ist 1024 Volt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.