Hallo zusammen.
Ich habe mich vor ein paar Tagen nach langer Arduino pause mal
hingesetzt und das ein oder andere Projekt gestartet.
Ganz neu bin ich auf dem Gebiet der Encoder.
Encoder einlesen und wert ausgeben hat nach anfänglichen problem auch
super geklappt.
Leider ist es so, das wenn ich den Encoder eine Raste weiter drehe, sich
der wert gleich um 4 erhöht. Und zwar immer genau um 4.
Schaltung: Ich nutze einen Arduino Mega 2560. Der Encoder hängt mit Pin1
auf D2 und mit Pin2 auf D22. Der Encoder ist mehr oder weniger direkt
verbunden. Habe testweise von pin1 und pin2 des Encoders jeweils einen
100nF elko zur Masse gesetzt, hat leider nicht geholfen. Deßwegen
momentan wieder direkt angeschlossen.
Code: long hdg_pos = 0;
void loop() {
long hdg_new = hdg.read();
if (hdg_new != hdg_pos) {
hdg_pos = hdg_new;}
if (hdg_pos > 360){
hdg.write(1);
}
if (hdg_pos < 1){
hdg.write(360);
}
}
Ich habe schon probiert hdg.read() / 4;
Das hilft auch danach sind dann einer Schritte möglich, allerdings macht
der "Wertebereich" dann Probleme denn wenn ich hdg.write(360) sage und
danach direkt hdg.read() / 4 gibt er mir natürlich 90 aus, soll aber 360
ausgeben.
(Ja, das ganze soll mal auf einen Autopiloten hinaus laufen)
Könnt ihr mir hier evt. weiterhelfen?
Lieber Gruß,
- Alex
Alexander S. schrieb: > Leider ist es so, das wenn ich den Encoder eine Raste weiter drehe, sich > der wert gleich um 4 erhöht. Und zwar immer genau um 4. Das ist vermutlich ganz normal. Der Encoder erzeugt zwischen den Rastpunkten zwei versetzte Pulse. Das gibt vier Zustandswechsel.
Also habe ich hier einen Encoder mit 20 Rastungen und 80 Impulsen? Wusste garnicht das es sowas gibt..... Gibts denn eine Möglichkeit das Problem irgendwie im Code zu lösen ohne gleich neue encoder kaufen zu müssen? lg.
Alexander S. schrieb: > Also habe ich hier einen Encoder mit 20 Rastungen und 80 Impulsen? Nein, das sind bestimmt 20 Rasten und auch 20 Impulse pro Spur. Durch die versetzten Signale der beiden Kanäle gibt das 80 Signalwechsel. Bei Encoder ohne Rasten (auf Motorwellen ...) bekäme man so 80 Positionen pro Umdrehung. Bei den Fingern mit Rasten, die man mit der Hand dreht bringt das aber nichts. Da gibt es eben nur so viele sinnvolle Positionen wie Rasten. Alexander S. schrieb: > Gibts denn eine Möglichkeit das Problem irgendwie im Code zu lösen Klar, schreib den Code um...
Gast
#4750460
Hallo Alexander, du hast sicherlich einen Encoder wie jeden anderen auch. Die meisten haben 24 Rastungen pro Umdrehung. Auch gehe ich in der Annahme, dass du dir eine fertige Libary gesucht hast für deinen Code. Ich gebe zu, habe ich für meinen ersten Encoder auch gemacht. Hier wurden auch je Rastung der Zähler um 4 inkrementiert/dekrementiert. Du kannst dein Problem genau durch verstehen der verwendeten Libary und anpassen selbiger an der richigen Stelle "lösen". Kannst ja mal deinen vollständigen Code posten, der Schnipsel aus deinem Eingangspost ist ja nur ein Bruchteil eines Arduinosketches... Gruß EGS
Alles klar. Also so wie ich rotary encoder kenne machen die pro Raste genau einen Wechsel. Anders macht die Raste m.M.n. auch keinen Sinn. Volker S. schrieb: > Alexander S. schrieb: >> Gibts denn eine Möglichkeit das Problem irgendwie im Code zu lösen > Klar, schreib den Code um... PS: Wenn man keine Lust hat anderen zu helfen kann man sich besser gleich aus sämtlichen Internet Foren verziehen, denn auf solche Kommentare kann ich und auch alle anderen die Hilfe suchen dankend verzichten. Schönen Abend noch.
Gast
#4750462
Tante Gurgel ist bekannt? http://playground.arduino.cc/Main/RotaryEncoders Oder hier die Erklärung S. 4 rechts http://www.imc-berlin.de/fileadmin/Public/Downloads/Whitepapers/WP_Inkrementalgeber_I.pdf
EGS schrieb: > Hallo Alexander, > > du hast sicherlich einen Encoder wie jeden anderen auch. Die meisten > haben 24 Rastungen pro Umdrehung. > > Auch gehe ich in der Annahme, dass du dir eine fertige Libary gesucht > hast für deinen Code. Ich gebe zu, habe ich für meinen ersten Encoder > auch gemacht. Hier wurden auch je Rastung der Zähler um 4 > inkrementiert/dekrementiert. > > Du kannst dein Problem genau durch verstehen der verwendeten Libary und > anpassen selbiger an der richigen Stelle "lösen". > > Kannst ja mal deinen vollständigen Code posten, der Schnipsel aus deinem > Eingangspost ist ja nur ein Bruchteil eines Arduinosketches... > > Gruß EGS Hi. Ja, ich arbeite mit Libary´s. Das häst es für mich schön einfach. Ich habe nur den Schnipsel rausgerückt weil das der einzige Teil ist in dem der encoder behandelt wird (exklusive inkludieren der libary und zuweisen der pins). Im Rest des Codes werden nur einige Sachen ans LCD Display ausgegeben. (Auch noch nicht schön) Trotzdem hier der ganze code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
Lieber Gruß, - Alex
Alexander S. schrieb: > Volker S. schrieb: >> Alexander S. schrieb: >>> Gibts denn eine Möglichkeit das Problem irgendwie im Code zu lösen >> Klar, schreib den Code um... > > PS: Wenn man keine Lust hat anderen zu helfen kann man sich besser > gleich aus sämtlichen Internet Foren verziehen, denn auf solche > Kommentare kann ich und auch alle anderen die Hilfe suchen dankend > verzichten. Schönen Abend noch. Den Code posten und um weitere Hinweise bitten wäre meiner persönlichen Meinung nach cleverer gewesen ;-)
Gast
#4750478
Das wäre eine einfache Lösung ... (Aber es gibt hier wirklich gutes Coding zur Encoder-Auswertung :-) )
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
ich finde den Code genial, lief wie immer von peda auf Anhieb! https://www.mikrocontroller.net/articles/Drehgeber ich habe auch einen 4er muss halt nur benutzt werden int8_t encode_read4( void ) // read four step encoders
Volker S. schrieb: > Den Code posten Ich mein natürlich den Lib-Code. Hat ja nicht jeder schon genau damit gearbeitet aber viele verstehen C-Code trotzdem, egal für was der geschrieben wurde.
Alexander S. schrieb: > Alles klar. > Also so wie ich rotary encoder kenne machen die pro Raste genau einen > Wechsel. Anders macht die Raste m.M.n. auch keinen Sinn. Da kennst Du wohl nicht viele ;-)
Gast
#4750508
> Ja, ich arbeite mit Libary´s. Das häst es für mich schön einfach. > Ich habe nur den Schnipsel rausgerückt weil das der einzige Teil ist in > dem der encoder behandelt wird (exklusive inkludieren der libary und > zuweisen der pins). Im Rest des Codes werden nur einige Sachen ans LCD > Display ausgegeben. (Auch noch nicht schön) > > Trotzdem hier der ganze code: > #include <LiquidCrystal.h> > #include <Encoder.h> So jetzt schau mal was du hier in der einen Zeile machst...du hast es ja bereits bschrieben. Die Libs sind dafür da das du anstelle jedesmal die kompletten Befehle zu schreiben mit Funktionsaufrufen arbeiten kannst. Daher wird dein Encoder nicht nur in deinem im Eingangspost gegebenen Code bearbeitet, sondern durch das #include <encoder.h>. Hier wird der Encoder denke mal im Interupt verarbeitet und als Funktion bereitgestellt was das Ergebniss ist (eine Variable die hoch/runterzählt) von der Impulsauswertung. Wenn du die "enoder.h" mit notepad oder der Arduino IDE öffnest dann siehst du da den entsprechenden Code. Und hier sind wir wieder bei: "Du kannst dein Problem genau durch verstehen der verwendeten Libary und anpassen selbiger an der richigen Stelle "lösen"." Gruß EGS
EGS schrieb: > Und hier sind wir wieder bei: > > "Du kannst dein Problem genau durch verstehen der verwendeten Libary und > anpassen selbiger an der richigen Stelle "lösen"." Pass auf,sonst bekommst du auch noch negative Bewertungen ;-)
Gast
#4750560
Volker S. schrieb: > Pass auf,sonst bekommst du auch noch negative Bewertungen ;-) Hihi als Gast :P Ich bin bloßzu vergesslich bei meinem mc-Forum PW (Selbstschutz vor negativen Bewertungen) ;) duckundwech
EGS schrieb: > Volker S. schrieb: >> Pass auf,sonst bekommst du auch noch negative Bewertungen ;-) > > Hihi als Gast :P.... Hätte ich wohl besser geschrieben "dein Beitrag" ;-)
Gast
#4750570
Verdammt... Volker S. schrieb: > EGS schrieb: >> Volker S. schrieb: >>> Pass auf,sonst bekommst du auch noch negative Bewertungen ;-) >> >> Hihi als Gast :P.... > Hätte ich wohl besser geschrieben "dein Beitrag" ;-) nassmachvorangst hihihihuhihuch...
So, ich habe mir gestern und heute morgen mal die Libary angeschaut. Meine Programmierkenntnisse sind allerdings nicht auf dem Stand um das alles auf Anhieb zu verstehen. Ich poste euch hier mal die Libary rein, vielleicht ist jemand von euch so nett und schaut mal drüber und kann mir dann vielleicht sagen welche part ich mir mal genauer anschauen könnte.....
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
181 | |
182 | |
183 | |
184 | |
185 | |
186 | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | |
200 | |
201 | |
202 | |
203 | |
204 | |
205 | |
206 | |
207 | |
208 | |
209 | |
210 | |
211 | |
212 | |
213 | |
214 | |
215 | |
216 | |
217 | |
218 | |
219 | |
220 | |
221 | |
222 | |
223 | |
224 | |
225 | |
226 | |
227 | |
228 | |
229 | |
230 | |
231 | |
232 | |
233 | |
234 | |
235 | |
236 | |
237 | |
238 | |
239 | |
240 | |
241 | |
242 | |
243 | |
244 | |
245 | |
246 | |
247 | |
248 | |
249 | |
250 | |
251 | |
252 | |
253 | |
254 | |
255 | |
256 | |
257 | |
258 | |
259 | |
260 | |
261 | |
262 | |
263 | |
264 | |
265 | |
266 | |
267 | |
268 | |
269 | |
270 | |
271 | |
272 | |
273 | |
274 | |
275 | |
276 | |
277 | |
278 | |
279 | |
280 | |
281 | |
282 | |
283 | |
284 | |
285 | |
286 | |
287 | |
288 | |
289 | |
290 | |
291 | |
292 | |
293 | |
294 | |
295 | |
296 | |
297 | |
298 | |
299 | |
300 | |
301 | |
302 | |
303 | |
304 | |
305 | |
306 | |
307 | |
308 | |
309 | |
310 | |
311 | |
312 | |
313 | |
314 | |
315 | |
316 | |
317 | |
318 | |
319 | |
320 | |
321 | |
322 | |
323 | |
324 | |
325 | |
326 | |
327 | |
328 | |
329 | |
330 | |
331 | |
332 | |
333 | |
334 | |
335 | |
336 | |
337 | |
338 | |
339 | |
340 | |
341 | |
342 | |
343 | |
344 | |
345 | |
346 | |
347 | |
348 | |
349 | |
350 | |
351 | |
352 | |
353 | |
354 | |
355 | |
356 | |
357 | |
358 | |
359 | |
360 | |
361 | |
362 | |
363 | |
364 | |
365 | |
366 | |
367 | |
368 | |
369 | |
370 | |
371 | |
372 | |
373 | |
374 | |
375 | |
376 | |
377 | |
378 | |
379 | |
380 | |
381 | |
382 | |
383 | |
384 | |
385 | |
386 | |
387 | |
388 | |
389 | |
390 | |
391 | |
392 | |
393 | |
394 | |
395 | |
396 | |
397 | |
398 | |
399 | |
400 | |
401 | |
402 | |
403 | |
404 | |
405 | |
406 | |
407 | |
408 | |
409 | |
410 | |
411 | |
412 | |
413 | |
414 | |
415 | |
416 | |
417 | |
418 | |
419 | |
420 | |
421 | |
422 | |
423 | |
424 | |
425 | |
426 | |
427 | |
428 | |
429 | |
430 | |
431 | |
432 | |
433 | |
434 | |
435 | |
436 | |
437 | |
438 | |
439 | |
440 | |
441 | |
442 | |
443 | |
444 | |
445 | |
446 | |
447 | |
448 | |
449 | |
450 | |
451 | |
452 | |
453 | |
454 | |
455 | |
456 | |
457 | |
458 | |
459 | |
460 | |
461 | |
462 | |
463 | |
464 | |
465 | |
466 | |
467 | |
468 | |
469 | |
470 | |
471 | |
472 | |
473 | |
474 | |
475 | |
476 | |
477 | |
478 | |
479 | |
480 | |
481 | |
482 | |
483 | |
484 | |
485 | |
486 | |
487 | |
488 | |
489 | |
490 | |
491 | |
492 | |
493 | |
494 | |
495 | |
496 | |
497 | |
498 | |
499 | |
500 | |
501 | |
502 | |
503 | |
504 | |
505 | |
506 | |
507 | |
508 | |
509 | |
510 | |
511 | |
512 | |
513 | |
514 | |
515 | |
516 | |
517 | |
518 | |
519 | |
520 | |
521 | |
522 | |
523 | |
524 | |
525 | |
526 | |
527 | |
528 | |
529 | |
530 | |
531 | |
532 | |
533 | |
534 | |
535 | |
536 | |
537 | |
538 | |
539 | |
540 | |
541 | |
542 | |
543 | |
544 | |
545 | |
546 | |
547 | |
548 | |
549 | |
550 | |
551 | |
552 | |
553 | |
554 | |
555 | |
556 | |
557 | |
558 | |
559 | |
560 | |
561 | |
562 | |
563 | |
564 | |
565 | |
566 | |
567 | |
568 | |
569 | |
570 | |
571 | |
572 | |
573 | |
574 | |
575 | |
576 | |
577 | |
578 | |
579 | |
580 | |
581 | |
582 | |
583 | |
584 | |
585 | |
586 | |
587 | |
588 | |
589 | |
590 | |
591 | |
592 | |
593 | |
594 | |
595 | |
596 | |
597 | |
598 | |
599 | |
600 | |
601 | |
602 | |
603 | |
604 | |
605 | |
606 | |
607 | |
608 | |
609 | |
610 | |
611 | |
612 | |
613 | |
614 | |
615 | |
616 | |
617 | |
618 | |
619 | |
620 | |
621 | |
622 | |
623 | |
624 | |
625 | |
626 | |
627 | |
628 | |
629 | |
630 | |
631 | |
632 | |
633 | |
634 | |
635 | |
636 | |
637 | |
638 | |
639 | |
640 | |
641 | |
642 | |
643 | |
644 | |
645 | |
646 | |
647 | |
648 | |
649 | |
650 | |
651 | |
652 | |
653 | |
654 | |
655 | |
656 | |
657 | |
658 | |
659 | |
660 | |
661 | |
662 | |
663 | |
664 | |
665 | |
666 | |
667 | |
668 | |
669 | |
670 | |
671 | |
672 | |
673 | |
674 | |
675 | |
676 | |
677 | |
678 | |
679 | |
680 | |
681 | |
682 | |
683 | |
684 | |
685 | |
686 | |
687 | |
688 | |
689 | |
690 | |
691 | |
692 | |
693 | |
694 | |
695 | |
696 | |
697 | |
698 | |
699 | |
700 | |
701 | |
702 | |
703 | |
704 | |
705 | |
706 | |
707 | |
708 | |
709 | |
710 | |
711 | |
712 | |
713 | |
714 | |
715 | |
716 | |
717 | |
718 | |
719 | |
720 | |
721 | |
722 | |
723 | |
724 | |
725 | |
726 | |
727 | |
728 | |
729 | |
730 | |
731 | |
732 | |
733 | |
734 | |
735 | |
736 | |
737 | |
738 | |
739 | |
740 | |
741 | |
742 | |
743 | |
744 | |
745 | |
746 | |
747 | |
748 | |
749 | |
750 | |
751 | |
752 | |
753 | |
754 | |
755 | |
756 | |
757 | |
758 | |
759 | |
760 | |
761 | |
762 | |
763 | |
764 | |
765 | |
766 | |
767 | |
768 | |
769 | |
770 | |
771 | |
772 | |
773 | |
774 | |
775 | |
776 | |
777 | |
778 | |
779 | |
780 | |
781 | |
782 | |
783 | |
784 | |
785 | |
786 | |
787 | |
788 | |
789 | |
790 | |
791 | |
792 | |
793 | |
794 | |
795 | |
796 | |
797 | |
798 | |
799 | |
800 | |
801 | |
802 | |
803 | |
804 | |
805 | |
806 | |
807 | |
808 | |
809 | |
810 | |
811 | |
812 | |
813 | |
814 | |
815 | |
816 | |
817 | |
818 | |
819 | |
820 | |
821 | |
822 | |
823 | |
824 | |
825 | |
826 | |
827 | |
828 | |
829 | |
830 | |
831 | |
832 | |
833 | |
834 | |
835 | |
836 | |
837 | |
838 | |
839 | |
840 | |
841 | |
842 | |
843 | |
844 | |
845 | |
846 | |
847 | |
848 | |
849 | |
850 | |
851 | |
852 | |
853 | |
854 | |
855 | |
856 | |
857 | |
858 | |
859 | |
860 | |
861 | |
862 | |
863 | |
864 | |
865 | |
866 | |
867 | |
868 | |
869 | |
870 | |
871 | |
872 | |
873 | |
874 | |
875 | |
876 | |
877 | |
878 | |
879 | |
880 | |
881 | |
882 | |
883 | |
884 | |
885 | |
886 | |
887 | |
888 | |
889 | |
890 | |
891 | |
892 | |
893 | |
894 | |
895 | |
896 | |
897 | |
898 | |
899 | |
900 | |
901 | |
902 | |
903 | |
904 | |
905 | |
906 | |
907 | |
908 | |
909 | |
910 | |
911 | |
912 | |
913 | |
914 | |
915 | |
916 | |
917 | |
918 | |
919 | |
920 | |
921 | |
922 | |
923 | |
924 | |
925 | |
926 | |
927 | |
928 | |
929 | |
930 | |
931 | |
932 | |
933 | |
934 | |
935 | |
936 | |
937 | |
938 | |
939 | |
940 | |
941 | |
942 | |
943 | |
944 | |
945 | |
946 | |
947 | |
948 | |
949 | |
950 | |
951 | |
> Ich poste euch hier mal die Libary rein
Welchen Teil von
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
hast Du jetzt nicht verstanden?
Alexander S. schrieb: > Ich poste euch hier mal die Libary rein, vielleicht ist jemand von euch > so nett und schaut mal drüber und kann mir dann vielleicht sagen welche > part ich mir mal genauer anschauen könnte..... Oh je, das sieht nicht gut aus falls der Assembler Teil aktiv sein sollte. Könnte man natürlich einfach entsprechend umdefinieren ;-) Also konkret ist die Auswertung unter der "Zeichnung" für die beiden Signale A und B die das Ganze erklären soll. Diese Auswertung ist nicht so geeignet für die Teile mit Rasten, welche man mit der Hand dreht, weil wie schon weiter oben erwähnt da mehrere Wechsel (bei deinem Geber 4) pro Raste stattfinden. Jetzt müsste man die State-mashine entsprechend anpassen oder eine andere Bibliothek suchen. Vor einiger Zeit habe ich mal versucht eine Auswertung zu schreiben die nicht unbedingt absolut elegant und effektiv ist, aber dafür hoffentlich einigermaßen verständlich.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
Die Auswahl um welchen Typ von Encoder es sich handelt kann man jetzt anhand der (Um)Gestaltung des ENUMs ENC_STATE treffen. (Für einen 20/20 liegen dann UP und DOWN bei +-4) In dem einfachen Beispiel hier wird für Up und DOWN nur ein Flag gesetzt. Genauso könnte man natürlich eine Position inkrementieren bzw.dekrementieren.
Gast
#4751154
Du erwartest zuviel von jemanden, der nicht /4 teilen kann. Vermutlich Einzelkind.
m.n. schrieb: > Du erwartest zuviel von jemanden, der nicht /4 teilen kann. > Vermutlich Einzelkind. ;-) Bezieht sich das jetzt auf meinen Beitrag oder den von Rufus?
Gast
#4751414
Volker S. schrieb: > ;-) Bezieht sich das jetzt auf meinen Beitrag oder den von Rufus? Auf den Beitrag von Rufus. Du hattest Dich mit Deiner Antwort einfach nur ein paar Millisekunden vorgedrängelt ;-)
Also ich habe mir das nochmal in Ruhe angeschaut und mich letztendlich dazu entschieden einfach eine andere Bibliothek zu nehmen. Ich habe eine gefunden die "etwas kürzer" bzw für mich deutlich besser zu verstehen ist. Es klappt auch alles ganz gut. Allerdings habe ich jetzt das Problem das auf meinem Display falsche Werte angezeigt werden. Im Seriellen monitor klappt alles perfekt. Nur die Werte auf dem Display stimmen oft nicht. Ich habe jetzt z.B. das problem das wenn ich von einer dreistelligen zahl (zahl > 100) zurück auf eine zweistellige drehe (Zahl =< 100) die dritte stelle stehen bleibt. Ich drehe also von z.B. 100 eins runter auf 99 (steht dann auch so im seriellen monitor) und auf dem Display steht 990. Drehe ich noch eins weiter habe ich im seriellen Monitor 98 und auf dem Display 980. Wenn ich mich irgendwo im minus bereich bewege ist es auch schon passiert das er von einer 4 stelligen minus zahl beim drehen auf eine 3 stellige minus zahl wieder auf eine 4 stellige minuszahl springt, auch hier bleibt dann wieder die letzte stelle stehen. Das liegt dann aber wohl eher an der libary für das Display? Obwohl mich das wundert, denn mit der anderen encoder libary ist das nicht passiert. Soll ich dafür besser einen neuen thread erstellen? Ich habe im Anhang mal die libary und den code den ich auf den Arduino schmeiße. lg. - Alex
Gast
#4758699
Alexander S. schrieb: > Ich drehe also von z.B. 100 eins runter auf > 99 (steht dann auch so im seriellen monitor) und auf dem Display steht > 990. Drehe ich noch eins weiter habe ich im seriellen Monitor 98 und auf > dem Display 980. Das ist ein Mikrocontroller und entsprechend doof - Du musst Dich um jeden S***** selbst kümmern: lcd.setCursor(3, 1); // Pos, Line (Vierte Stelle der zweiten Zeile) lcd.print(" "); // Leerzeichen schreiben lcd.setCursor(3, 1); // wieder zur selben Stelle lcd.print(Deinen_Wert); (Deine library habe ich nicht angeguckt).
Gast
#4758717
Alexander S. schrieb: > Ich drehe also von z.B. 100 eins runter auf 99 (steht dann auch so > im seriellen monitor) und auf dem Display steht 990. Drehe ich noch > eins weiter habe ich im seriellen Monitor 98 und auf dem Display 980. Da hat nur jemand die Tafel nicht richtig gewischt. Die "0" hinter der "99" oder "98" auf dem Display steht da noch von der Ausgabe der "100".
Manfred schrieb: > Das ist ein Mikrocontroller und entsprechend doof - Du musst Dich um > jeden S***** selbst kümmern Oder die passende Bibliothek suchen! (dauert vermutlich länger ;-)
Okay, vielen Dank für eure Hilfe. Habt mir echt weitergeholfen. Die Tafel ist jetzt also richtig "geputzt" und alles sieht so aus wie ich mir das vorstelle. Kommen wir nochmal auf den Encoder zurück. In meinem Speziellen fall muss ich ja quasi einen wertebereich vorgeben. Dem Encoder also sagen, dass wenn er größer als 359 wird, wieder den wert 1 bekommt. Ich vermute damit ich ein Funktion wie z.B. setValue benutzen kann, muss ich diese in der cpp datei definieren? Ich habe leider nicht wirklich ahnung von cpp, bin auch nur Hobbyfummler am Arduino. Wenn der encoder eingelesen wird haut der cpp code den wert über die variable r raus. Richtig? Also müsste ich theoretisch nur sagen das wenn die Funktion setValue aufgerufen wird diese der var r einen bestimmte wert gibt. Oder? Kann mir jemand von euch evtl verraten wie ich das bewerkstellige? Lieber Gruß, - Alex
Gast
#4761425
Alexander S. schrieb: > Die Tafel ist jetzt also richtig "geputzt" Diese Formulierung von Wolfgang gefällt mir richtig gut - einleuchtend und exakt zutreffend. > Dem Encoder also sagen, > dass wenn er größer als 359 wird, wieder den wert 1 bekommt. Der Encoder liefert ja keinen absoluten Wert, sondern nur Impulse. Diese Impulse werden in einer Variablen mitgezählt, richtig? Sollte also genügen, den Wert zu überwachen: if (Encoder0Pos > 359) { Encoder0Pos = 1; }
Gast
#4761497
Manfred schrieb: > if (Encoder0Pos > 359) { > Encoder0Pos = 1; > } Na ja, den kleiner 1 Fall sollte man auch noch betrachten ...
Alexander S. schrieb: > dass wenn er größer als 359 wird, wieder den wert 1 bekommt. Die Position 360 oder 0 Grad ist nicht existent?
Gast
#4762667
Manfred schrieb: > if (Encoder0Pos > 359) { > Encoder0Pos = 1; > } Da fehlt ein Grad!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.