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
Jo, ist dann halt so... Was willst Du denn genau?! Sollen die Minuten gerundet werden?!
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?
Will aus dem ADC ne Minuten Sekunden Anzeige machen. Je nach Poti Stellung ne andere Dauer Im ENteffekt 0 - 25 Minuten mit Sekunden
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
Nette Mann schrieb: > ne eben net 0,9 = 90% von einer minute Wieviel Sekunden dauert denn bei dir eine halbe Minute (0,5 Minuten)?
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)...
>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.
dazu fällt mir irgendwie ein: Die Wahrheit liegt im Auge des Betrachters ...
ist doch easy: zahl/60 => minuten zahl mod 60 => sekunden dann einfach mal ausprobieren
irgendwie is der einzigste der mich einwenig versteht didadu kopf kratz naja ich machs selber
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?
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.
@ 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
>andere nehmen für sowas teurere drehencoder, die kompliziert
Naja, ab 1,50 faellt bei mir nicht unter teuer.
Gast
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
@ 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
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.
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 :-)
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
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.
> 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!!
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.
moin eigentlich wäre es mir egal ob mein Frühstücksei 5min50sec oder 6min10sec kocht , hauptsache ~6min mfg
sekunden = ADCwert / 1023 * 1500 minuten = 0 while sekunden > 60: minuten += 1 sekunden -= 60
> 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.
didadu schrieb: > sekunden = ADCwert / 1023 * 1500 > minuten = 0 > while sekunden > 60: > minuten += 1 > sekunden -= 60 Das ist jetzt aber kein BASCOM, oder?
> 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
> Das ist jetzt aber kein BASCOM, oder?
Sieht eher aus wie python :-)
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.
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.
@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...?
kam ich nie zu recht weil das in der hilfe für unverständlich geschrieben ist
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
> Na, wenigstens etwas ;-)
Gut, dass wenigstens ein paar intelligente Leute hier sind!
Schön gemacht, Deine Homepage!
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
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
> 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?
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.