Hallo Leute,
ich habe 8 LEDs an meinen Mikrocontroller angeschlossen und möchte das
diese nacheinander an und aus Leuchten. Dafür muss ich in der C-Progr.
_delay_ms(x) benutzen, um die Zeitabstände einzustellen. Die
Zeitabstände soll der Potentiometer bestimmen.
Nun weis ich nicht ob ich den das Potentiometer erstens richtig
angeschlossen habe (siehe Screenshot) und zweitens:
Wie lese ich den Wert ein und wandel das in Zeit um?
Habe den Potentiometer an A0 angeschlossen, weil es eine analoge PIN
ist.
Habe ich PIN A0 richtig als INPUT definiert?
- arbeite mit Atmel Studio
- atmega2560
int main(void)
{
DDRB = 0xFF; //Port B Output
DDRA &= ~(1<<PC0); //Pin PA0 Input
int t=200;
int arr[8] = {1,2,4,8,16,32,64,128};
int pinindex = -1;
int poti = 0; //Wert Potentiometer
// Potentiometer von Pin 0 einlesen (Wert zwischen 0 und 1023)
poti = PINA0(0);
Du brauchst ein Libary die ein analog.Read ausführt.
In B4R weiß ich wie das geht. :)
Wenn du den Wert hast, einfach die Parameter selbst festlegen.
z.b.
Wenn Wert = 0 then Zeit = 10
Wenn Wert = max then Zeit = 1000
Delay (zeit)
Gruß
Pucki
Alexander K. schrieb:> Du brauchst ein Libary die ein analog.Read ausführt.
Hab die jetzt gefunden. Un weiter ? :)
> Wenn du den Wert hast, einfach die Parameter selbst festlegen.>> z.b.> Wenn Wert = 0 then Zeit = 10> Wenn Wert = max then Zeit = 1000
Danke :)
wenn dein mikrocontroller ein Arduino derivat ist,
ist analogRead(Pin) Dein Freund;
und wenn Du vorher kürzeste und längste Zeit
definierst
1
minT = 1000; //in ms
2
maxT = 100000; //ebenfalls in ms
dann kannst Du Arduinos mapping funktion nutzen
1
val = analogRead(0);
2
delayTime = map(val, 0, 1023, minT, maxT);
um dann schlicht mit
1
delay(delayTime);
zu warten;
das spart Dir die if conditions um die Wartezeit festzulegen
benutzt Du keine Arduino bibliothek sollte
eine mundgemalte map-funktion dasselbe ermöglichen:
1
long map(long x, long xmin, long xmax, long tomin, long tomax)
Alexander K. schrieb:> Du brauchst ein Libary die ein analog.Read ausführt
Krass. Wie habe ich es seit Jahrzehnten bloß geschafft das ganze ohne
extra library zu machen? Ich vermute, dass ich das Datenblatt gelesen
habe
Timmo H. schrieb:> Wie habe ich es seit Jahrzehnten bloß geschafft das ganze ohne> extra library zu machen? Ich vermute, dass ich das Datenblatt gelesen> habe
vermutlich :D
Aber möchtest Du Ugur erklären wie man das macht
ohne sein µC zu kennen und damit im Datenblatt nachschlagen zu können;
oder ist es nicht einfacher ihn an ein library zu verweisen,
was ihm und Dir die Arbeit erleichtert?
Ja, man könnte nun ggf streiten ob "brauchen" das richtige Verb in
diesem Zusammenhang ist;
ob "könntest benutzen" nicht eventuell besser passen würde..
aber diese Diskussion gehörte wohl in ein "sprachliche Finesse"-Forum ;)
shalömmchen
'sid
sid schrieb:> Aber möchtest Du Ugur erklären wie man das macht> ohne sein µC zu kennen und damit im Datenblatt nachschlagen zu können
Ich bin nicht Timmo, trotzdem antworte ich mal als ob du mich
angeschrieben hättest:
Nein, möchte ich nicht. Er soll erst seinen Mikrocontroller kennen
lernen, indem er das Datenblatt liest. Danach helfe ich gerne weiter.
Ugur A. schrieb:>> Du brauchst ein Libary die ein analog.Read ausführt.> Hab die jetzt gefunden. Und weiter ? :)
Was genau hast du gefunden? Gibt es dazu keine Anleitung?
Timmo H. schrieb:> Alexander K. schrieb:>> Du brauchst ein Libary die ein analog.Read ausführt> Krass. Wie habe ich es seit Jahrzehnten bloß geschafft das ganze ohne> extra library zu machen? Ich vermute, dass ich das Datenblatt gelesen> habe
Es würde mir viel leichter fallen, wenn du mir dann sagen würdest, wie
es ohne eine extra library gemacht wird. Ich denke 80% der Benutzer
fragen deshalb mal in Foren, weil man einfach keine Lust hat sich 2
Stunden die Datenblätter zu lesen und versuchen zu verstehen..
Stefan ⛄ F. schrieb:> Ugur A. schrieb:>>> Du brauchst ein Libary die ein analog.Read ausführt.>> Hab die jetzt gefunden. Und weiter ? :)>> Was genau hast du gefunden? Gibt es dazu keine Anleitung?
Hab zwar die library dazu gefunden, wie man auf die analogen PINs
zugreift, aber verstehen und anwenden kann ich leider nicht.
Ich arbeite zum ersten mal mit Mikrocontrollern und versuche mir das
anzulernen..
Alexander K. schrieb:> Du brauchst ein Libary die ein analog.Read ausführt.
Es ist völlig egal, ob die Funktion zum Abtasten des Signals in einer
Library steht oder im eigenen Code. Und natürlich darf die Methode einen
beliebigen anderen Namen haben.
Karim A. schrieb:> Stefan ⛄ F. schrieb:>> Ugur A. schrieb:>>>> Du brauchst ein Libary die ein analog.Read ausführt.>>> Hab die jetzt gefunden. Und weiter ? :)>>>> Was genau hast du gefunden? Gibt es dazu keine Anleitung?> Hab zwar die library dazu gefunden, wie man auf die analogen PINs> zugreift, aber verstehen und anwenden kann ich leider nicht.
Das ist die library dafür
#include <avr/interrupt.h>
Karim A. schrieb:> Timmo H. schrieb:>> Alexander K. schrieb:>>> Du brauchst ein Libary die ein analog.Read ausführt>> Krass. Wie habe ich es seit Jahrzehnten bloß geschafft das ganze ohne>> extra library zu machen? Ich vermute, dass ich das Datenblatt gelesen>> habe> Es würde mir viel leichter fallen, wenn du mir dann sagen würdest, wie> es ohne eine extra library gemacht wird. Ich denke 80% der Benutzer> fragen deshalb mal in Foren, weil man einfach keine Lust hat sich 2> Stunden die Datenblätter zu lesen und versuchen zu verstehen..https://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC
sid schrieb:> Aber möchtest Du Ugur erklären wie man das macht> ohne sein µC zu kennen und damit im Datenblatt nachschlagen zu können;> oder ist es nicht einfacher ihn an ein library zu verweisen,> was ihm und Dir die Arbeit erleichtert?
Ist doch ganz einfach: "Guck ins Datenblatt!"
Vielleicht auch einfach mal grundlegende Dinge angucken?
Für soziemlich jeden Mikrocontroller findet man irgendwo im Internet ein
Tutorium. Wenn man nicht mal dazu in der Lage ist, sollte man mal
überlegen, ob man sich nicht eine andere Beschäftigung suchen sollte.
Und dann kommt immer wieder gerne der Spruch "Das sollen wir für den
Lehrer machen. Der hat das im Unterricht aber gar nicht angesprochen."
Also:
als erstes den Controller benennen!
dann einen Link zum Datenblatt (manche Hersteller haben auch eine ganze
Sammlung zu dem Thema...).
STK500-Besitzer schrieb:> Also:> als erstes den Controller benennen!> dann einen Link zum Datenblatt (manche Hersteller haben auch eine ganze> Sammlung zu dem Thema...).
OK, wurde schon genannt... (mein ADHS lässt grüßen)
Karim A. schrieb:> Es würde mir viel leichter fallen, wenn du mir dann sagen würdest, wie> es ohne eine extra library gemacht wird.
Steht im Datenblatt. Darüber hinaus kann ich Dir Tutorials empfehlen:
https://www.mikrocontroller.net/articles/AVR-Tutorial:_ADChttp://stefanfrings.de/mikrocontroller_buch/index.html> Ich denke 80% der Benutzer fragen deshalb mal in Foren, weil> man einfach keine Lust hat sich 2 Stunden die Datenblätter zu> lesen und versuchen zu verstehen..
Da hast du bestimmt Recht. Und 80% der Helfer wollen sehen, dass du doch
ins Datenblatt schaust, weil das immer die erste Anlaufstelle für
Informationen ist. Wer zu faul ist, den Umgang mit seinem
Mikrocontroller zu erlernen, der soll ihn nicht benutzen.
Wir lassen ja auch nur Leute Auto-fahren, die es gelernt haben.
Karim A. schrieb:>> Was genau hast du gefunden? Gibt es dazu keine Anleitung?> Hab zwar die library dazu gefunden, wie man auf die analogen PINs> zugreift, aber verstehen und anwenden kann ich leider nicht.
Welche Library?
Du kannst es Dir vielleicht nicht vorstellen, aber es gibt da sehr viele
und die funktionieren unterschiedlich. Soll ich Dir jetzt alle erklären?
Das kann ich gar nicht, weil ich nur einige davon kenne. Und so wird es
allen Helfern hier gehen.
Also werde sehr viel konkreter, nur so kann dir geholfen werden.
> Ich arbeite zum ersten mal mit Mikrocontrollern und> versuche mir das anzulernen..
Warum fängst du dann mit dem größten/komplexesten/teuersten aus der
Serie an? Finde ich nicht sehr logisch. Ich habe das Autofahren
schließlich auch nicht in einem LKW gelernt.
Karim A. schrieb:> Das ist die library dafür> #include <avr/interrupt.h>
Nein, ganz sicher nicht. Die hat mit ADC nur marginal zu tun.
Die Doku zur AVR Library ist dort:
https://www.nongnu.org/avr-libc/user-manual/index.html
Und wenn du das mal überfliegst wirst du sehen, dass da für den ADC gar
keine Funktionen drin sind. Musst du dir selber schreiben oder von einer
andere Quelle downloaden. Selber schreiben anhand der Infos im
Datenblatt ist letztendlich einfacher - glaube es mir.
Stefan ⛄ F. schrieb:> Warum fängst du dann mit dem größten/komplexesten/teuersten aus der> Serie an? Finde ich nicht sehr logisch. Ich habe das Autofahren> schließlich auch nicht in einem LKW gelernt.
Es ist immer noch ein AVR. Worin unterscheidet der sich von einem
anderem ATmega bzgl. Programmierung in C?
Stefan ⛄ F. schrieb:> Ich habe das Autofahren> schließlich auch nicht in einem LKW gelernt.
Hmmm...
So irgendwie mit 11 bis 12 angefangen Trecker mit 2 Anhängern zu fahren.
Ist irgendwie näher am LKW, als an einem Smart.
------------
STK500-Besitzer schrieb:> Worin unterscheidet der sich von einem> anderem ATmega
Das Datenblatt ist erheblich umfangreicher.
Was sich bei einer ausgeprägten Datenblattlesehemmung arg
kontraproduktiv auswirkt.
STK500-Besitzer schrieb:> Es ist immer noch ein AVR. Worin unterscheidet der sich von einem> anderem ATmega bzgl. Programmierung in C?
Vor allem im Preis. Wenn man ihn schrottet, wird es unnötig teuer. Und
wenn man keine Lust auf das umfangreiche Datenblatt hat, sollte man sich
mal einen kleinen AVR angucken, da ist das Datenblatt auch viel kürzer.
Ja, das ändert nichts wesentliches an der Programmierung, aber hilft
vielleicht, erste Hemmungen zu überwinden.
Arduino Fanboy D. schrieb:> So irgendwie mit 11 bis 12 angefangen Trecker mit 2 Anhängern zu fahren.
Sicher hast du davor zuerst das Trekker-Fahren ohne Anhänger gelernt,
und das wohl auch nicht gleich auf dem größten Modell.
Ich möchte noch etwas ergänzen:
Mir ist durchaus bewusst, dass nicht jeder diese Datenblätter verstehen
kann. Sie sind auf englisch geschrieben und voller Fachwörter und
Abkürzungen die für den Anfang sicher nicht einfach sind. Aber da muss
man durch, wenn man mit diesen Bauteilen ernsthaft arbeiten will.
Und wenn nicht? Dann empfehle ich Arduino! Arduino wurde genau dafür
gemacht, den Einstieg zu vereinfachen. Arduino vereinfacht die Sache,
indem Funktionen und Sachverhalte reduziert/vereinfacht dargestellt
werden. Dort gibt es die oben genannte Funktion analogRead().
Stefan ⛄ F. schrieb:> Wir lassen ja auch nur Leute Auto-fahren, die es gelernt haben.
Da habe ich manchmal ernsthafte Zweifel dran.
Für viele Leute reicht es, im Besitz des Führerscheines zu sein.
[OT]
Stefan ⛄ F. schrieb:> Sicher hast du davor zuerst das Trekker-Fahren ohne Anhänger gelernt,> und das wohl auch nicht gleich auf dem größten Modell.
Eher auf einem "modernen" Trecker als z.B. auf einem von Porsche.
Der hatte weder Servolenkung noch Bremskraftverstärker.
Mit 11/12 Jahren dürfte man noch nicht dauerhaft die Kraft für sowas
haben.
Ist jetzt aber nur vermutet.
[/OT]
Arduino Fanboy D. schrieb:> Das Datenblatt ist erheblich umfangreicher.> Was sich bei einer ausgeprägten Datenblattlesehemmung arg> kontraproduktiv auswirkt.
Wenn man von grundlegenden Funktionen keine Ahnung hat, ist der
Datenblattumfang doch eher irrelevant - da steht man wie der Ochs' vorm
Berg.
Stefan ⛄ F. schrieb:> Vor allem im Preis. Wenn man ihn schrottet, wird es unnötig teuer. Und> wenn man keine Lust auf das umfangreiche Datenblatt hat, sollte man sich> mal einen kleinen AVR angucken, da ist das Datenblatt auch viel kürzer.>> Ja, das ändert nichts wesentliches an der Programmierung, aber hilft> vielleicht, erste Hemmungen zu überwinden.
Irgendwas wird ihn dazu bewegt haben, diesen Controller zu verwenden.
Ich habe damals auch mein erstes Projekt mit einem mega162 realisiert.
Das Zweite hatte dann schon einen mega644.
STK500-Besitzer schrieb:> Irgendwas wird ihn dazu bewegt haben, diesen Controller zu verwenden.
Sicher, ich wollte es ja nur mal kurz erwähnen. Grundsätzlich falsch war
die Wahl sicher nicht.
Ich hab mir diesen Controller auch nicht von irgendwo ausgesucht.. Ist
für die Uni..
ich dachte mir das könnte doch nicht schwer sein eine einfache analoge
Pin, deshalb habe ich, ohne das Datenblatt zu lesen, in die Runde
gefragt. Für so eine kleine Sache schaut man doch nicht ins Datenblatt,
sondern guckt mal eben im Internet..
Wollte schließlich nur wissen, wie ich den Wert von meinem Potentiometer
vom analogen PIN auslese das wars..
Naja dann schau ich mal wie ich das irgendwie hinkriege..
Danke für die Tutorials.
Karim A. schrieb:> Für so eine kleine Sache schaut man doch nicht ins Datenblatt,
Doch!
Man schaut sogar für viel kleinere Sachen ins Datenblatt.
Karim A. schrieb:> Wollte schließlich nur wissen, wie ich den Wert von meinem Potentiometer> vom analogen PIN auslese das wars..
Die Tutorials kannst du so schnell nicht gelesen haben. Verwende deine
Zeit nicht mit diskutieren*, arbeite leiber die Tutorials durch.
*) Ich darf das, denn ich habe gerade nichts besseres zu tun
Stefan ⛄ F. schrieb:> Sicher hast du davor zuerst das Trekker-Fahren ohne Anhänger gelernt,> und das wohl auch nicht gleich auf dem größten Modell.
Mit Anhänger!
Der Jüngste musste fahren, die Erwachsenen haben geladen.
Und ja, dunemals gehörte das Modell zu den größeren.
Ja, war nicht einfach.
Die heutigen großen, fahren sich dagegen kinderleicht. Da muss man nur
einmal die ganzen Hebel und Einstellungen kapieren.
Was hat das alles nun mit dem Potentiometer zu tun? Wer keine Lust hat
auf Fragen zu antworten, der wird doch hoffentlich nicht in diesem Forum
dazu gezwungen.
BlaBla schrieb:>> Trekker fahren> Was hat das alles nun mit dem Potentiometer zu tun?
So ist das eben in lockeren Diskussionsrunden ohne strenge Moderation.
Wer keine Lust darauf hat, muss ja nicht mitmachen.
BlaBla schrieb:> Was hat das alles nun mit dem Potentiometer zu tun? Wer keine Lust> hat> auf Fragen zu antworten, der wird doch hoffentlich nicht in diesem Forum> dazu gezwungen.
Ja, dein Beitrag ist da wirklich sehr lehrreich!
In Sachen Fachlichkeit kaum zu unterbieten.
Kennst du die Geschichte mit dem Splitter und dem Brett?
Karim A. schrieb:> Bitte Thread löschen!!
Warum?
Hast du inzwischen rausgefunden, wie man ein Poti mit Hilfe des ADCs
ausliest?
Die Datenblätter von Atmel sind noch recht übersichtlich aufgebaut und
enthalten sogar Beispiele für verschiedene verschiedene Komponenten
(z.B. USART).
Schade, daß ich nichts zur Erklärung beitragen kann, denn die Gefahr,
daß mein Beitrag nicht die von der Moderation normierte Schöpfungshöhe
erreicht und darauf hin gelöscht wird, ist mir zu hoch.
Nur Stichworte für den Autor:
-ADC einlesen
-den ADC Bereich 0-1023 in 8 Bereiche einteilen
-Mit Select case einen von den 8 Bereichen auswählen und jeweilige LED
ansteuern
(ob und wie das in C geht, -keine Ahnung)
viel Erfolg, trotz der Knüppel-Werfer hier.
:((
Karim A. schrieb:> Bitte Thread löschen!!
Warum, nur weil deine Frage beantwortet wurde oder du die Lust am Thema
verloren hast?
Ich glaube, du hast den Sinn des öffentlichen Diskussionsforums
missverstanden. Es dient nicht primär dem Thread-Eröffner, sondern der
Allgemeinheit. Später finden hier andere bereits geschriebene Antworten
auf ihre Fragen!
Deren Beiträge jetzt einfach zu löschen, wäre eine große
Respektlosigkeit. Es würde rasch zum Tod des Forum führen, weil nur noch
Fragen gestellt werden aber niemand mehr Bock hat, sie zu beantworten.
Wenn du möchtest, dass ich meine Zeit nur für dich persönlich opfere,
dann bezahle mich gefälligst dafür!
Stefan ⛄ F. schrieb:> Karim A. schrieb:> Später finden hier andere bereits geschriebene Antworten> auf ihre Fragen!>> Deren Beiträge jetzt einfach zu löschen, wäre eine große> Respektlosigkeit. Es würde rasch zum Tod des Forum führen, weil nur noch> Fragen gestellt werden aber niemand mehr Bock hat, sie zu beantworten.
Wie hast Du diesen Text überhaupt verfassen können, angesichts der
Lachtränen in den Augen?
WER sollte aus den Schmähungen und dem blöden Gesülz bis zum jetzigen
Zeitpunkt irgendeinen Nutzen ziehen?
Zyniker ist ein Scheiß-Beruf, mein Freund !
>> Wenn du möchtest, dass ich meine Zeit nur für dich persönlich opfere,> dann bezahle mich gefälligst dafür!
Ich sag Dir was: Bevor ich Dich mit IRGENDETWAS beauftragte, würde ich
das lieber am 2. Weihnachtsfeiertag im Zelt auf dem Nanga Parbat selbst
tun.
Erklärbär schrieb:> WER sollte aus den Schmähungen und dem blöden Gesülz bis zum jetzigen> Zeitpunkt irgendeinen Nutzen ziehen?
Der Thread kann in ferner Zukunft immerhin noch als Beispiel für den
Zeitgeist 2020 dienen. Ob das ein gutes oder schlechtes Beispiel sein
wird, werden wir erst später wissen.
Erklärbär schrieb:> Ich sag Dir was: Bevor ich Dich mit IRGENDETWAS beauftragte, würde ich> das lieber am 2. Weihnachtsfeiertag im Zelt auf dem Nanga Parbat selbst> tun.
Jetzt, wo ich es weiß: Du könntest dort unerwarteten Besuch bekommen.
Wir sehen uns!
Karim A. schrieb:> Bitte Thread löschen!!
Jemand, der lediglich Bausteine (Soft- wie Hardware) zusammenklöppeln
möchte, ist einfach im falschen Forum! Was hilft es denn, immer wieder
gebetsmühlenartig "datenblatt lesen" ect. zu schreiben, wenn der TO das
nicht will?! Verlorene Liebesmüh :-)
Gruß Rainer
Nein meine Frage wurde weder beantwortet, noch habe ich die Lust am
Thema verloren. Ich wusste nicht das in diesem Forum Leute gibt die die
Fragen von einem Anfänger mit "Lies dir das Datenblatt" beantworten.
Foren dienen dazu, sowohl über allgemeine Themen zu diskutieren, als
auch die Probleme von anderen Menschen, die nicht so viel Ahnung über
das Thema haben, aber sich interessieren zu lösen.
Das bedeutet aber nicht das du dazu gezwungen wirst! Und bezahlen kann
dich dein Arbeitgeber, ich hab dich nicht dazu gezwungen deine Zeit für
mich zu opfern.
In anderen Foren wurden mir auch ganz normale Fragen ganz einfach und
konkret beantwortet, als immer "Datenblatt lesen". Wenn hier allgemeine
Themen diskutiert werden sollen und explizite Fragen zum Controller bzw.
Programmierung nicht beantwortet werden, dann gehört mein Thread auch
nicht hier rein und kann gelöscht werden.
Es gibt Menschen die können mit 1000 Seiten Text lernen und es gibt
Menschen die lernen einiges durch kleine Projekte..
Deine RESPEKTLOSIGKEIT kannst du dir ersparen, denn diese Eigenschaft
hast du bereits bewiesen!
Deshalb nochmal, bitte diesen Thread löschen, damit nicht andere
Anfänger, die von diesem Forum Hilfe benötigen, sich sofort
zurückziehen, nachdem die diese Antworten lesen!
Karim A schrieb:> Ich wusste nicht das in diesem Forum Leute gibt die die> Fragen von einem Anfänger mit "Lies dir das Datenblatt" beantworten.
Es gibt auch Leute, die antworten, dass du zu blöd bist wenn du Fragen
stellen musst. Sei nicht so schnell eingeschnappt, im allen
Diskussionsforen geht es eher grob zu!
Was ist den mit den Tutorials und dem Hinweis auf Arduino. Kannst du
damit auch nichts anfangen?
Erklärbär schrieb:> WER sollte aus den Schmähungen und dem blöden Gesülz bis zum jetzigen> Zeitpunkt irgendeinen Nutzen ziehen?>> Zyniker ist ein Scheiß-Beruf, mein Freund !Karim A schrieb:> Deine RESPEKTLOSIGKEIT kannst du dir ersparen, denn diese Eigenschaft> hast du bereits bewiesen!
Ist Paul Baumann wieder unterwegs?
Mehrere Nutzernamen im selben thread sind nicht erlaubt.
Ich finde der Thread muss erhalten bleiben!
Dient er doch als prächtiges, abschreckendes, Beispiel dafür, wie man
sich selber eine Frikadelle aufs Knie nagelt, wenn man seine
DokuLeseVerweigerung ausleben will.
Karim A schrieb:> Es gibt Menschen die können mit 1000 Seiten Text lernen und es gibt> Menschen die lernen einiges durch kleine Projekte..
Ja, kleine Projekte. Das heißt aber nicht, dass jemand anders die Lösung
explizit auf einem silbernen Tablett liefert.
> Deine RESPEKTLOSIGKEIT kannst du dir ersparen, denn diese Eigenschaft> hast du bereits bewiesen!
Respekt muss man sich verdienen, indem man etwas leistet. Dazu gehört
sicherlich nicht "Rumschnorren".
> Deshalb nochmal, bitte diesen Thread löschen, damit nicht andere> Anfänger, die von diesem Forum Hilfe benötigen, sich sofort> zurückziehen, nachdem die diese Antworten lesen!
Und dann studierst du an der Uni?
Welches Fach denn?
Stefan ⛄ F. schrieb:> Karim,> was ist den mit den Tutorials und dem Hinweis auf Arduino. Kannst du> damit auch nichts anfangen?
@Karim
Arduinio is the safe way to the abyss. Not more and not less.
Stefan ⛄ F. schrieb:> Man schaut sogar für viel kleinere Sachen ins Datenblatt.
und sollten die mal fehlerhaft sein (was natürlich NIE vorkommt) so
findet man die Lösung heute auch im Internet!
Also ich entschuldige mich das ich helfen wollte.
ICH brauche keine echte Libary sondern nur ein Harken setzen und schon
steht mir so einen Kleinigkeit zu Verfügung.
Aber ich programmiere die Teile auch nur INDIREKT mit der Arduino-Ide.
Also mit einen VOR-Compiler der den Arduino-Ide-Code erzeugt. Die
Arduino-Ide compiliert "richtig" und schiebt ihn dann in den Chip.
Was dazu führt das ich keine blöden geschweiften Klammern brauche, und
auch sehr sehr selten eine Arduino-Libs.
Ich bin faul und mache mir das Leben einfach. So einfach ist das.
Gruß
Pucki
Hallo,
es ist doch so einfach. Den richtigen Prozessor, den richtigen
Treibertransistor und etwas Software schon kann man mit einem Poti LED
per PWM steuern.
Die Schaltung ist für die Armaturenbrettbeleuchtung eines MG Roadster
Bj. 1954 entworfen worden mit Minus am Chassis. Normalerweise Plus am
Chassis und das Drahtpoti gab regelmässig den Geist auf.
Salu Hans
PS: C-Freaks und Arduino Geplagte bitte wegschauen, damit kein Neid
aufkommt :))
HBose schrieb:> PS: C-Freaks und Arduino Geplagte bitte wegschauen, damit kein Neid> aufkommt :))
Der Code sieht nach BASCOM aus. Habe ich Recht ?
Gruß
Pucki
HBose schrieb:> C-Freaks und Arduino Geplagte bitte wegschauen,> damit kein Neid aufkommt
Wie albern! Du verwendest ein Framework. Das kann man z.B. mit Arduino
ebenfalls tun und da wäre der äquivalent Quelltext sogar noch deutlich
kürzer und einfacher zu verstehen.
Hallo,
ja BASCOM! Trotz fast 30 Jahren C-Programmierung, nehme ich für private
Projekte BASCOM. Ist einfacher und man schleppt nicht so viel fremden
Code mit, den man nicht kennt.
2017 (Renteneintritt) wurde bei meinem Ex Arbeitgeber C als
Programmiersprache verboten wegen zu hoher Wartungskosten und nicht
nachvollziehbarem Code.
Selbst die Programmierer wussten nach 4 Wochen nicht mehr was sie da
zusammen codiert hatten. War immer lustig in Krisensitzungen wenn es mal
wieder um kapitale Bugs ging.
Salu Hans
Stefan ⛄ F. schrieb:> Das kann man z.B. mit Arduino> ebenfalls tun und da wäre der äquivalent Quelltext sogar noch deutlich> kürzer und einfacher zu verstehen.
Dann mach mal :)))!!!
Salu Hans
Das ist der gesamte Quelltext!
Weißt du, ich habe nur marginal Ahnung von Arduino, aber du noch
weniger. Sei ein bisschen vorsichtiger, bevor du hier über anderer Leute
Arbeit ablästerst. Der Schuss könnte nach hinten losgehen und das ist
dann nicht mehr lustig.
Hallo,
na wer schiesst denn da, willst du mir drohen? Benimm dich!! Dich hätte
ich in den Kurs für "Sozialverträgliche Kommunikation" geschickt bevor
du an einer Besprechung teilnehmen darfst!
Ich habe schon Arduinos programmiert da bist du noch mit nacktem Popo
und Trömmelchen um den Weihnachtsbaum gelaufen :)))
Bau es auf und beweise das es funktioniert. Die Fehler in dem Code nenne
ich dir aber nicht, die darfst du selber suchen ;).
Meine schwäbischen Chefs haben immer gesagt: "Ned schwätze, machen!!"
Salu Hans
HBose schrieb:> Benimm dich!!> Die Fehler in dem Code nenne> ich dir aber nicht, die darfst du selber suchen
Das ist echt zum fremdschämen. Ich klinke mich hier mal aus, bevor es
noch hässlicher wird.
Karim A schrieb:> Deshalb nochmal, bitte diesen Thread löschen, damit nicht andere> Anfänger, die von diesem Forum Hilfe benötigen, sich sofort> zurückziehen, nachdem die diese Antworten lesen!
Als Student habe ich viel Mathe-Nachhilfe gegeben, meist von
verzweifelten Eltern angeheuert und es gab immer zwei Probleme. Die
Eltern und der Schüler..."Hilfestellung bei den Hausaufgaben wirds
richten" und "ich kapiers nicht...was kapierst du nicht?? Alles" ...und
das oft in der Abi-Klasse. Und trotz anständiger Bezahlung habe ich so
manchen Job einfach hingeschmissen. Eine Frage der Nerven, genau wie
hier etwa :-)
Gruß Rainer
Stefan ⛄ F. schrieb:> Das ist echt zum fremdschämen. Ich klinke mich hier mal aus, bevor es> noch hässlicher wird.
gute Entscheidung! Ja die Gefahr für dich ist groß das du dich
blamierst.
Meine Schaltung funktioniert und ist in der MG-Szene sehr beliebt um das
Drahtpoti zu ersetzen.
Salu Hans
PS: Ein Rat von einem alten Sack: "Nicht immer den dicken Max machen, es
gibt auch Leute die mehr können als man selber. Von denen kann man(n)
dann lernen!". Das habe ich mein ganzes Berufsleben so gemacht! "Mit den
Augen klauen", hat mein Ausbilder immer gesagt.
Salu Hans
Stefan ⛄ F. schrieb:> int poti = analogRead(A0);
warum int?
kann der analogRead(A0); jemals negativ werden?
Es wird zwar funktioneren, aber klüger wäre ja beim Wertebereich 0-1023
ein uint16_t, da sieht jeder gleich das es nie negative Werte gibt und
auch abfragen <0 ist sinnlos.
Alexander K. schrieb:> Wie wäre das denn. ;)
Klasse Link!! Genau so etwas braucht der TO. Auf so einer Basis kann man
dann auch vernünftig fragen oder?!
Gruß Rainer
Hallo,
das Problem des MG Projektes ist nicht unbedingt der Code. "Viele Wege
führen da nach Rom".
Es muss in das Potigehäuse passen sonst ist die H-Nummer weg, wegen
nicht originalem Einbau ins Armaturenbrett ("Denkmalschutz"). Man darf
eine Modernisierung nicht erkennen. Deshalb sieht die Platine auch etwas
abenteuerlich aus. Wer da einen Arduino unterbringt kann zaubern.
Da bleibt nur native Aufbau ohne Overhead. Mit dem Arduino Geraffel
bekommt man das nicht verbaut.
Salu Hasn
Mit Library + NULL Verständnis kann man sich erzählen lassen,
wie man mit einem 100-Pin µC die Aufgabe eines damit total
gelangweilten 14-Pin-µCs löst.
Weil man NULL Vorstellung hat, was man den 100 Pins und der Logik
dahinter entlocken könnte. Und das, trotzdem man viel Schule vor
Corona hatte.
Logisch, dass die Kakerlake die Menschheit locker überleben wird.
Stefan ⛄ F. schrieb:> Niemand hat in Frage gestellt, dass dein Programm funktioniert.
Neidisch? ;) Den Beweis hast du ja noch nicht angetreten.
Merkst du eigentlich nicht das du dich immer mehr blamierst.
Joachim B. schrieb:>> int poti = analogRead(A0);> warum int?
Weil die analogread() Funktion einen int zurückliefert. Wenn Dir das
nicht gefällt, würde ich Dir empfehlen, das mit den Machern von Arduino
zu diskutieren. Hier ist der falsche Ort dafür.
Joachim B. schrieb:> Stefan ⛄ F. schrieb:>> int poti = analogRead(A0);>> warum int?> kann der analogRead(A0); jemals negativ werden?>> Es wird zwar funktioneren, aber klüger wäre ja beim Wertebereich 0-1023> ein uint16_t, da sieht jeder gleich das es nie negative Werte gibt und> auch abfragen <0 ist sinnlos.
Ich weiß nicht, wie du es hältst....
Meine Arduino AVR ADCs können sehr wohl negative Werte liefern.
Nicht alle, aber einige können das.
OK, OK, nicht mit den originalen analogRead().
Aber die kann man ja überladen
z.B. der Mega, Leonardo oder Micro hat differenzielle ADC
HBose schrieb:> Den Beweis hast du ja noch nicht angetreten.> Merkst du eigentlich nicht das du dich immer mehr blamierst.
Ich merke da tatsächlich nichts. Wahrscheinlich blamiere ich mich damit,
dass ich Dir noch antworte.
Schade, dass du die zahlreichen "Beweis"-Videos bei Youtube nicht finden
konntest. Oder die zahlreichen Arduino Tutorials (auch auf arduino.cc)
die es genau so erklären. Da wird ein weiteres Video wohl auch nichts
nützen.
Stefan ⛄ F. schrieb:> HBose schrieb:>> Den Beweis hast du ja noch nicht angetreten.>> Merkst du eigentlich nicht das du dich immer mehr blamierst.>> Ich merke da tatsächlich nichts. Wahrscheinlich blamiere ich mich damit,> dass ich Dir noch antworte.>> Schade, dass du die zahlreichen "Beweis"-Videos bei Youtube nicht finden> konntest. Oder die zahlreichen Arduino Tutorials (auch auf arduino.cc)> die es genau so erklären. Da wird ein weiteres Video wohl auch nichts> nützen.
Zügle Deine Schnauze mal ein bisschen! So ein Grossmaul ist selbst hier
selten -und das heißt schon etwas.
Alle Achtung schrieb:> Zügle Deine Schnauze mal ein bisschen!> So ein Grossmaul ist selbst hier selten -und das heißt schon etwas.
Große Worte, kannst du ihnen denn etwas Sinn geben? Was ist an meinem
(aus dem orignalen Tutorial kopierten) Arduino Beispielcode falsch?
Hi
>Meine Arduino AVR ADCs können sehr wohl negative Werte liefern.
Das können alle AVRs mit 'Differential Input Channels'. Also AVRs die ab
etwa 2002 herausgekommenen sind, lange bevor an Arduinos zu denken war,
MfG Spess
Stefan ⛄ F. schrieb:> Alle Achtung schrieb:>> Zügle Deine Schnauze mal ein bisschen!>> So ein Grossmaul ist selbst hier selten -und das heißt schon etwas.>> Große Worte, kannst du ihnen denn etwas Sinn geben? Was ist an meinem> (aus dem orignalen Tutorial kopierten) Arduino Beispielcode falsch?
1. Dein Code ist unvollständig und nur deshalb kleiner als der
Bascom-Code von Hans.
2. Greifst Du in völlig unangebrachter Weise Leute an, die wirklich
helfen und nicht das Forum 24h/d als Bühne für die eigene
Selbstdarstellung nutzen.
3. Du bist ein Narzisst aus dem Lehrbuch und hältst Dich für ein
Geschenk an den Rest der Menschheit.
Wenn ich Dir versichere, daß das nicht so ist, so stehen sicher etliche
hinter mir und nicken.
Alle Achtung schrieb:> 1. Dein Code ist unvollständig und nur deshalb kleiner als der> Bascom-Code von Hans.
Ist er nicht, solange du den (angeblichen) Fehler nicht aufzeigen
kannst.
> 2. Greifst Du in völlig unangebrachter Weise Leute an, die wirklich> helfen und nicht das Forum 24h/d als Bühne für die eigene> Selbstdarstellung nutzen.
Ich greife niemanden an. Ich bin derjenige, der hier angegriffen wird.
Ich antworte nur sachlich.
> 3. Du bist ein Narzisst aus dem Lehrbuch und hältst Dich für ein> Geschenk an den Rest der Menschheit.
Für solche Feststellungen kennst du mich zu wenig, zudem steht es Dir
nicht zu, andere so zu nennen.
Ich fühle mich gerade so, als ob ich zwei Irrenden erklären muss, dass
die anderen 7,8 Milliarden Menschen nicht irre sind. Das ist wohl
aussichtslos.
Oder ist es gar eine Person, die sich nicht an die Nutzungsbedingungen
des Forums hält?
spess53 schrieb:> lange bevor an Arduinos zu denken war,
Auch ist "int" der natürliche C++/C Datentype für integrale Zahlen.
"int" gibts immer.
Bei "uint16_t" kann man sich da nicht so sicher sein.
Weit verbreitet, ja.
Immer vorhanden, nein.
Auch ist "int" oft der effizienteste Datentype.
Egal ob ein int jetzt gerade mal 16, 32 oder 64 Bit breit ist.
(Ausnahme: 8Bit µC)
Stefan ⛄ F. schrieb:> Alle Achtung schrieb:>> 1. Dein Code ist unvollständig und n.......>> Ist er nicht, solange du den (angeblichen) Fehler nicht aufzeigen> kannst.
Hier muss ich dem Stefanus mal zustimmen, ob ich will, oder nicht.
Der Code ist komplett und lauffähig, sofern man einen Arduino verwendet,
welcher diese Fähigkeiten auf den genannten Pins beherrscht.
Nach Anpassung der Pinbezeichner, dürfte das JEDER Arduino(oder
kompatibler) sein.
Egal ob da ein AVR, ARM, ESP oder sonstwas am werkeln ist.
Hallo,
den Ärger habe ich durch die Fussnote meines ersten Postings ausgelöst.
Pardon! Stefan scheint da etwas empfindlich zu sein. Wusste ich ich
nicht. Cooldown :)
Fakt ist aber dass, C-Programme und Ardunio Programme an der schlechten
Qualität der Include Programme kranken.
Wenn es in meinem Arbeitsleben um Krissensitzungen ging waren es immer
die Includs die aus Bequemlichkeit verwendet wurden.
Bei Arduino kann man sie zu 99% vergessen und in bestimmten C Umgebungen
95%.
Das Problem liegt im System. Man integriert Programmteile die man nicht
selbst erzeugt hat und deswegen nicht zu 100% versteht, die schlecht
programmiert sind und schlecht dokumentiert sind. Ganz übel ist das bei
ARDUINO da ist ja nur Schrott unterwegs.
Beispiel:
Wenn ein Fahrzeug mit einem ABS System mit C Includs in der
Programmierung, 45m Bremsweg hat. Bei gleichen äußeren und mechanischen
Bedingungen und einer anderen Programmiersprache, plötzlich nur noch
32m Bremsweg hat, sind solche Schwächen von C nicht akzeptabel. Das ist
lebensgefährlich.
Mein Ex-Arbeitgeber hat es verstanden und C inclusive Derivate verboten.
Arduino kam nie zum Einsatz, selbst zum testen nicht.
Ich habe zum Schluß meines Berufslebens nur noch in einem
Macro-Assembler programmiert. Keins meiner sicherheitsrelevanten
Programme wurden jemals Bestandteil einer Scrum Krisensitzung :). Geht
doch !!
Salu Hans
HBose schrieb:> Stefan scheint da etwas empfindlich zu sein.
Du verkennst die Situation.
Stefan ist keinesfalls ein Arduino Vän!
Wenn ihn da einordnen, dann eher das Gegenteil davon.
Nee...
Wer sich gründlich daneben benommen hat, und das fortsetzt, das bist du.
Ganz alleine.
Arduino Fanboy D. schrieb:> Ich weiß nicht, wie du es hältst....> Meine Arduino AVR ADCs können sehr wohl negative Werte liefern.
ich weiss bei ATmega32 hatte ich diff mit GAIN mal genutzt um an einen
Shunt den Battereiestrom zu messen.
Bei AnlogRead am Arduino noch nie genutzt, der einzige ATmega Arduino
den ich habe ist der m1284p mighty mini, der kann das auch aber nie
genutzt, ich denke da müsste ich die Atmel Studio Routinen nutzen?
Ist aber egal, bei AnalogRead las ich immer 0-1023.
Arduino Fanboy D. schrieb:> Du verkennst die Situation.> Stefan ist keinesfalls ein Arduino Vän!> Wenn ihn da einordnen, dann eher das Gegenteil davon.>> Nee...> Wer sich gründlich daneben benommen hat, und das fortsetzt, das bist du.> Ganz alleine.
Ach du lieber Gott jetzt tauchen auch noch die Trolls oder
Zweit-Accounts auf.
Wo bin ich denn hier nur gelandet?
Das ist ja fast Mobbing. Naja 50 Jahre Berufserfahrung scheinen hier
nicht hin zu passen. Hier sind anscheinend nur "Aluhüte" geduldet :)))
Salu un Tschüss Hans
HBose schrieb:> Ach du lieber Gott jetzt tauchen auch noch die Trolls oder> Zweit-Accounts auf.
Keineswegs. Der Arduino Fanboy ist jemand, mit dem ich oft
leidenschaftlich gegen Arduino diskutiere. Er hat Recht, ich halte
wirklich wenig von dem System. Aber immer wenn ich nicht 100% sauber
argumentiere, weist er mich zurecht. Das kann er, denn er kennt sich mit
Arduino sehr gut aus und weiß wie man es richtig (sicher, sinnvoll)
verwendet.
Arduino Fanboy D. schrieb:> OK, OK, nicht mit den originalen analogRead().
deswegen schrieb ich das ja,
https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
The analog reading on the pin. Although it is limited to the resolution
of the analog to digital converter (0-1023 for 10 bits or 0-4095 for 12
bits). Data type: int.
ich bin ja nur Arduino dumm, ich verstehe trotzdem nicht wenn analogRead
nur positive Werte liefert warum man int als Rückgabewert nehmen sollte.
Es gibt Dinge die kann man einfach nicht verstehen.
HBose schrieb:> Fakt ist aber dass, C-Programme und Ardunio Programme> an der schlechten Qualität der Include Programme kranken.
Fakt ist, dass Programmierer in allen Hochsprachen auf fertige
Komponenten zugreifen, nicht nur in C und Arduino.
> Wenn es in meinem Arbeitsleben um Krissensitzungen ging waren> es immer die Includs die aus Bequemlichkeit verwendet wurden.
Dann sind dort Stümper unterwegs, die irgednwas zusammenkopieren und
nicht anständig angucken / testen.
> Bei Arduino kann man sie zu 99% vergessen> und in bestimmten C Umgebungen 95%.
Komisch, dann habe ich immer die 1% getroffen.
> Beispiel:> Wenn ein Fahrzeug mit einem ABS System mit C Includs in der> Programmierung, 45m Bremsweg hat. Bei gleichen äußeren und> mechanischen Bedingungen und einer anderen Programmiersprache,> plötzlich nur noch 32m Bremsweg hat,> sind solche Schwächen von C nicht akzeptabel.
Das Problem liegt eindeutig auf Deiner Seite, Du bist überfordert, die
zur Anwendung passende Entwicklungsumgebung zu wählen. Kein Mensch mit
einem IQ oberhalb eines Aldi-Toastbrotes wird für zeitkritische
Umgebungen eine unbekannte Klasse (includes) nutzen.
Ich habe schon Anwendungen in Assembler geschrieben und
Ausführungszyklen gezählt, weil es an der Leistungsgrenze des
Controllers war. Genauso schätze ich aber die Bequemlichkeit von C(++),
wenn es egal ist:
Mein Akkutester holt alle 5 Sekunden einen Messwert, schreibt bei
Änderungen maximal alle 500ms ins Display, in der Zwischenzeit langweilt
sich der ATMega - das ist es vollkommen Banane, wie schlecht die
includes sind.
HBose schrieb:> Ach du lieber Gott jetzt tauchen auch noch die Trolls> oder Zweit-Accounts auf.
Ob Du einen Zweit-Account hast, kann ich nicht sehen. Dass Du zur Gruppe
der Trolle gehörst, ist aber offenkundig erkennbar.
Joachim B. schrieb:> Es gibt Dinge die kann man einfach nicht verstehen.
Es spielt doch für AVR keine Rolle, ob signed, oder unsigned.
Der Wertebereich ist in beiden Fällen, für die originale Funktion,
ausreichend.
Außerdem existiert die Funktion schon recht lange, stammt aus den
Anfangszeiten. Ein Interface ändert man nicht ohne Not. Eine Not gibt es
nicht. Zumindest sehe ich keine.
Auch wenn man darüber streiten kann, was optimal wäre, da gibts ganz
andere Baustellen, die viel wichtiger sind/wären.
Manfred schrieb:> Fakt ist, dass Programmierer in allen Hochsprachen auf fertige> Komponenten zugreifen, nicht nur in C und Arduino.
Außer HBose und c-hater. Wenn die Welt untergeht, und sie unsere einzige
Rettung sind, werden wir ihnen noch dankbar sein.
Arduino Fanboy D. schrieb:> Außerdem existiert die Funktion schon recht lange, stammt aus den> Anfangszeiten.
ach ja, kennt man "ham wa immer so gemacht"
Arduino Fanboy D. schrieb:> Ein Interface ändert man nicht ohne Not. Eine Not gibt es> nicht.
mich ärgert zu oft das signed Char, keine Ahnung wo mir das immer
begegnet ist aber ich kannte bis dato keine signed Char.
Aber wie ich schrieb, ich habe keine Ahnung.
Momentan klemmt es in den neueren Arduino IDEs bei mir, Code der mal
lief wird nach update nun zwar kompiliert, läuft aber nicht mehr.
Ich suche nun in Einzelschritten woran es liegt und bin auf den Temp
Ordner gestoßen der tatsächlich mir jahrelang verheimlicht wurde wo *.o
Files noch zu gelinkt werden.
Noch so ein Teil wie die tmp die offensichtlich auch Daten sammelt,
benenne ich einen Ordner um weil ich was anderes probieren möchte will
er partout in den umbenannten Ordner suchen und dann passiert "kann
tool.c.c. nicht finden" und ich wundere mich das ich keine .c.c Datei
finde.
Irgendwie ist zwischen der Arduino 1.05 1.6.x und 1.8.x für meinen
Geschmack zu viel geändert worden.
Betrachte das bitte nicht als meckern, wie ich schrieb ich nutze Arduino
gerne, aber manches macht mehr Probleme als es löst. Ich wollte
eigentlich eine Erleichterung und nicht abseits der zu lösenden
"Programmieraufgaben" Nebenschauplätze erforschen.
Joachim B. schrieb:> mich ärgert zu oft das signed Char, keine Ahnung wo mir das immer> begegnet ist aber ich kannte bis dato keine signed Char.
Über sowas ärgerst du dich?
Ja, dann dann wirds schwierig....
Arduino Fanboy D. schrieb:> Über sowas ärgerst du dich?
ja wenn ich an anderer Stelle unsigned deklariere und es nutzen will
frage ich mich halt immer noch wie ein char signed werden soll und finde
keine Antwort.
Ärgern ist heute altersmilde geworden etwas stark ausgedrückt, aber es
lenkt nur ab. Mittlerweile weiss ich ja zu oft das es selten so ist wie
ich es wünsche, das muss ich halt hinnehmen lernen, manchmal klappt es
besser manchmal nicht, wem geht das nicht so?
Vielleicht findet sich ja noch jemand der mir verständlich erklären kann
warum und wo ein Char negativ werden kann, so das ich es auch mal
verstehe.
LG
Joachim B. schrieb:> ja wenn ich an anderer Stelle unsigned deklariere und es nutzen will> frage ich mich halt immer noch wie ein char signed werden soll und finde> keine Antwort.
Ich kann dir eine Antwort liefern!
Aber sie wird dir nicht in den Kram passen.
Merke:
char ist ein grundlegender Datentype.
Seit Anbeginn der C und auch C++ Tage unverändert vorhanden.
Im C und auch im C++ Standard, ist nicht festgelegt, ob char signed,
oder unsigned ist.
Es liegt also in der Hand des Compilerbauers.
"Implementation defined" nennt sich das.
Genau so, "Wieviel Bit hat ein char?"!
Auch dieses ist "Implementation defined".
36Bit pro char ist vielleicht selten, aber durchaus im Rahmen des
Standards.
Wenn man mit char rechnen möchte, muss man also selber definieren, ob
man mit oder ohne Vorzeichen rechnen möchte.
DAS WAR SCHON IMMER SO.
Da du das beides nicht weißt, muss ich davon ausgehen, dass dich die
Standardwerke, bzw. Sprachdefinitionen bisher überhaupt nicht
interessiert haben.
Und mit Arduino hat das nichts zu tun.
Außer, dass dort ein die GCC mitgeliefert wird.
Aber die Collection hat sich in dem Punkt seit XX Jahren nicht geändert.
Joachim B. schrieb:> mich ärgert zu oft das signed Char, keine Ahnung wo mir das immer> begegnet ist aber ich kannte bis dato keine signed Char.
Das normale char ist in der Regel signed. Manche Leute schreiben es
gerne hin, wenn es eine Rolle spielt, damit das offensichtlich ist.
Joachim B. schrieb:> Momentan klemmt es in den neueren Arduino IDEs bei mir, Code der mal> lief wird nach update nun zwar kompiliert, läuft aber nicht mehr.
Das ist bei Arduino normal. Besser nicht updaten oder alte Versionen (in
der Portable Variante samt nachinstallierter Cores und Bibliotheken) für
alte Projekte aufbewahren.
Stefan ⛄ F. schrieb:> Das ist bei Arduino normal.
Jetzt fängst du auch wieder mit dem Bashing an...
Hasste mal wieder einen Kumpel gefunden, mit dem du in fremde Hintern
treten kannst.
Gemeinsamkeit macht Stark!
Stefan ⛄ F. schrieb:> Portable Variante
Die Empfehlung ist richtig!
> Momentan klemmt es in den neueren Arduino IDEs bei mir, Code der mal> lief wird nach update nun zwar kompiliert, läuft aber nicht mehr.
Das ist, ohne den Code zu zeigen, einfach nur Geblubber.
Da wird die eigenen Unfähigekit und Nichtwissen, einer IDE/Framework in
die Schuhe geschoben.
Und das Nichtwissen ist bewiesen, siehe: signed/unsigned char.
Schade Stefan, dass du diese Polarisierungsversuche auch noch aktiv
unterstützt.
Aber so ist das wohl in diesen postfaktischen Zeiten.
Einer erzählt Stuss!
Der nächste springt auf den dullen Zug auf, und wenn genug päpen wirds
zum alternativen Fakt, den man dann ungefiltert in die Welt posaunen
kann.
Arduino Fanboy D. schrieb:> Schade Stefan, dass du diese Polarisierungsversuche auch noch aktiv> unterstützt.
Es entspricht halt auch meiner Erfahrung mit Arduino. Insbesondere die
3rd Party Libs unterliegen häufig Veränderungen, die nicht
abwärtskompatibel sind. Bestes Beispiel ist der ganze Kram rund um
ESP8266, mein hauptsächlicher Anwendungsfall von Arduino.
Mir ist klar, dass die Arduino Mache nichts dafür können. Und ich bin
ihnen dankbar, dass sie dafür einfache pragmatische Lösungen (nämlich
die Portable Version) bereit stellen.
Stefan ⛄ F. schrieb:> Es entspricht halt auch meiner Erfahrung mit Arduino.Stefan ⛄ F. schrieb:> Mir ist klar, dass die Arduino Mache nichts dafür können.
Immerhin der Versuch zu differenzieren.
Noch halbherzig.
Aber ein Versuch.
Und wenn sich Joachim B. jetzt auch noch entschließen würde zu
differenzieren, und auch den Problem Code zeigt, dann kanns vielleicht
noch was werden.....
Stefan ⛄ F. schrieb:> Das normale char ist in der Regel signed. Manche Leute schreiben es> gerne hin, wenn es eine Rolle spielt, damit das offensichtlich ist.
Das ist nicht richtig.
Char hat wirklich 3 unabhängige Formen, für Zeichen char, für skalare
entweder signed oder unsigned.
Anders als int, das per Default signed ist, und daher das selbe ist wie
signed int.
Auch wenn mir diese Anmerkung leid tut, Stefan, wo Du hier so tapfer
gegen krude C-verschwörer ankämpst.
Stefan ⛄ F. schrieb:> Joachim B. schrieb:>> Momentan klemmt es in den neueren Arduino IDEs bei mir, Code der mal>> lief wird nach update nun zwar kompiliert, läuft aber nicht mehr.>> Das ist bei Arduino normal. Besser nicht updaten
das tröstet aber auch nicht und hilft nicht weiter, ich habe gerade
wieder nach Neuaufsetzen von Arduino und mit gewüschtem Säubern aller
meiner Installationen die aktuelle Adafruit-GFX LIB installiert:
die Vorgängerversion ging ohne Probleme, ich nutze ja kein OLED, also
warum soll nun die Adafruit_MonoOLED LIB eingebunden werden die die
Adafruit_I2CDevice LIB vermisst?
Arduino Fanboy D. schrieb:> Stefan ⛄ F. schrieb:>> Das ist bei Arduino normal.> Jetzt fängst du auch wieder mit dem Bashing an...>> Hasste mal wieder einen Kumpel gefunden,
nicht wirklich, ist wohl und bleibt wohl nicht "mein Kumpel" da er auch
immer wieder versucht mir in den Hintern zu treten, da möchte ich mich
gerne distanzieren.
Arduino Fanboy D. schrieb:> Ich kann dir eine Antwort liefern!> Aber sie wird dir nicht in den Kram passen.>> Merke:> char ist ein grundlegender Datentype.> Seit Anbeginn der C und auch C++ Tage unverändert vorhanden.>> Im C und auch im C++ Standard, ist nicht festgelegt, ob char signed,> oder unsigned ist.> Es liegt also in der Hand des Compilerbauers.> "Implementation defined" nennt sich das.> Genau so, "Wieviel Bit hat ein char?"!> Auch dieses ist "Implementation defined".> 36Bit pro char ist vielleicht selten, aber durchaus im Rahmen des> Standards.>> Wenn man mit char rechnen möchte, muss man also selber definieren, ob> man mit oder ohne Vorzeichen rechnen möchte.>> DAS WAR SCHON IMMER SO.
1. OK das Char verschiedene Bitbreiten annehmen kann akzeptiere ich ja
auch je nach CPU ist es sinnvoll nicht immer auf 8 Bit zurückzufallen!
2. Das Char sich auf den Datentyp Character bezieht auch, nur ist das in
meinem Verständnis nicht vorzeichenbehaftet.
Arduino Fanboy D. schrieb:> Da du das beides nicht weißt, muss ich davon ausgehen, dass dich die> Standardwerke, bzw. Sprachdefinitionen bisher überhaupt nicht> interessiert haben.
ist leider eine Unterstellung die ich widerlegen könnte angefangen bei K
& R aber mir gehts nicht unbedingt ums Rechthaben, ich suche ja wenn
möglich den Konsens oder eine Erklärung die ich akzeptieren kann und
noch besser wenn ich sie verstehe!
Arduino Fanboy D. schrieb:> Es liegt also in der Hand des Compilerbauers.
und da denke kommen wir hin, das es da Fehler gibt die unendlich
weitergeführt werden mal so (aus Überlegung) mal so (aus Nachlässigkeit)
und nicht jeder immer da genau ansetzen mag.
nun kann ich "Fehler beim Kompilieren für das Board Arduino Nano." die
Adafruit LIB für mich korrigieren, erweitern bedingte Kompilierung für
mich einbauen oder zurück zur alten LIB wechseln.
Eigentlich alles was nicht mein Job ist, ich wollte in meinem Programm
vorwärts kommen.
Wie gesagt, ich bin dankbar für jede funktionierende Adafruit LIB, das
macht heute vieles einfacher, aber auch Profis machen Fehler oder
prgrammieren gelinde gesagt "fehlerhaft", vielleicht mit "reift beim
Kunden" und kann in der nächsten Version ja abgestellt werden.
An einer Stelle bin ich beim Stefan ganz ohne Arduino Bashing, nicht
mehr jedem Update hinterherhecheln, sondern nur wenn es nötig ist habe
ich gelernt, nur gerade weil ich eh dabei war alles neu aufzusetzen kam
mir diese GFX als letzte unter die Finger und leider ist das mein Fehler
das ich im Header nicht immer prüfe welche LIB Version ich nahm, weil
ich doch die nicht unberechtigte Hoffnung hatte das FolgeLIBS zumindest
kompatibel funktionieren, wir reden ja hier nicht über 30 Jahre Abstand
wo win 3.1 oder winXP Programme unter neueren nicht mehr laufen, nicht
mal im Kompatiblitätsmodus.
Während Arduino 1.8.12 auf dem rasPI mit Buster schon läuft gibts immer
noch keine Version für win7-64, zumindest tut es die 1.8.9 noch und win7
ist auch schon abgesagt, könnte also sein das es nie mehr eine Arduino
Version für win7-64 gibt.
Wie gesagt kein Gemecker nur der Teil der mich gerade beschäftigt in
meinem Programm vorwärts zu kommen mit Nebenprobleme die ein Anwender
nicht lösen möchte.
Joachim B. schrieb:> 2. Das Char sich auf den Datentyp Character bezieht auch, nur ist das in> meinem Verständnis nicht vorzeichenbehaftet.
In meinem auch nicht, aber nicht nur der gcc sah das schon immer anders.
Ich habe das im Kuriositätenkabinett der Programmiersprache abgeheftet.
Kann ich eh nicht ändern.
Stefan ⛄ F. schrieb:> Joachim B. schrieb:>> 2. Das Char sich auf den Datentyp Character bezieht auch, nur ist das in>> meinem Verständnis nicht vorzeichenbehaftet.
Es gibt offenbar auch negative Charaktere. Insbesondere hier.
?
sid schrieb:> long map(long x, long xmin, long xmax, long tomin, long tomax)> {> return (x - xmin) * (tomax - tomin) / (xmax - xmin) + tomin;> }> long mapTenBit(long x, long tomin, long> tomax)> {> return x * (tomax - tomin) / 1023 + tomin;> }
An dieser Stelle der obligatorische Hinweis: Ein 10-Bit ADC kann 2¹⁰
verschiedene Werte ausgeben. Deswegen ist jeder Schritt 1/1024 vom
Messbereich groß.
Aber vermutlich rede ich an der Stelle gegen eine Wand. Es gibt auch
Leute, die nie verstehen werden, warum an einer Hand 5 Finger sind aber
nur 4 Zwischenräume dazwischen...
Charakterfester schrieb:> Es gibt offenbar auch negative Charaktere. Insbesondere hier.
unbestritten und wenn mich einer so sehen will auch OK, aber bei Char
auf dem Compi?
Dabei lernte ich auch gerade von einem Compilerbauerund Informatiker
immer sorgfältig zu programmieren und wehe ich will mal signed char
nutzen dann kommt mir der Compiler mit unsigned Fehler oder umgekehrt,
seit 1986 ist das mein Ärgernis.
Was wäre denn richtig?
Der eine meint so der andere anders, sind das auch nicht nur Meinungen.
Nur weil EINER Character als signed definiert hat muss das nicht richtig
sein, es ist auch nur eine Definition die sich offensichtlich länger
hält.
Noch schlimmer wirds gefühlt wer in Arduino ALLE Warnungen einschaltet,
da wird auf einmal sogar ein Pointer auf ein Char Array angemeckert,
dabei ist doch klar definiert das ein Array of Char:
1
charmeine_zeichenkette[]={"hat diesen Inhalt"};
das meine_zeichenkette die Adresse aufs erste Zeichen liefert, ich also
den Pointer benutzen darf -> while(*meine_zeichenkette++) oder so
ähnlich.
Ist durchaus im Arduino mit 32k Flash auf dem nano auch innerhalb der
64K Grenze und somit 16bittig OK ist. Gedanken darf ich mir beim ATmega
2560 und 1284p machen oder auf dem ESP32.
mit allen Warnings mag er nicht mal das:
switch (TagNummer) {
case 0:
return"Sonntag ";
.......................................
manchmal klemmt es auch in strxx_P Versionen mit PSTR() wann und wo habe
ich noch nicht vollständig durchblickt.
Auch mag der eine Programmierer lieber
const uint8_t pwmtable_11C[] PROGMEM = ......
der Andere aber
const uint8_t PROGMEM pwmtable_11C[] = ......
wo zur Hölle gehört denn PROGMEM hin?
Neuerdings "soll" man ja das __flash Statement nutzen, bin verwirrt.
So gerade eben wieder die alte GFX LIB installiert, mein Programm läuft
wieder unter beiden LIBs wahlweise:
mit der Adafruit GFX LIB habe ich am Nano328p folgenden Verbrauch:
Der Sketch verwendet 11502 Bytes (35%) des Programmspeicherplatzes. Das
Maximum sind 32256 Bytes.
Globale Variablen verwenden 1202 Bytes (58%) des dynamischen Speichers,
846 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
mit der LCD5110_Basic LIB von Henning Karlson habe ich am Nano328p
folgenden Verbrauch:
Der Sketch verwendet 8818 Bytes (27%) des Programmspeicherplatzes. Das
Maximum sind 32256 Bytes.
Globale Variablen verwenden 658 Bytes (32%) des dynamischen Speichers,
1390 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
wie man sieht deutlich sparsamer, ab ESP32 ist es (noch) egal flash und
RAM im Überfluß, für Kleineres wo eigentlich ein nano reicht wirds eng.
Aber beim Rechnen mit Adressen wird die IDE leicht zickig mit allen
Warnungen aktiv, das muss man casten bis der Arzt kommt, aber es geht
hier immer noch um die Brot und Buter Arduinos, das vesagt natürlich
schon in Grenzen wer auf dem ESP32 die 2te CPU nutzen will und
frecherweise auch noch Daten mit dieser austauschen will.
Aber wie gesagt dann nur dann muss man eh tiefer einsteigen und wer sich
in die GPU Programmierung mit 128 Bitbreite begibt dem hilft auch nicht
mehr uint64_t oder int64_t, gibts denn schon uint128_t oder gar
uint256_t?
uint8_t var1=0;
uint16_t var2=0;
uint32_t var3=0;
uint64_t var4=0;
uint128_t var5=0;
uint256_t var6=0;
also ab 64_t meckert der Compiler und die IDE wechselt die Farbe von
blau zu schwarz also unbekannt.
exit status 1
'uint128_t' does not name a type; did you mean 'uint32_t'?
Was wollte ich eigentlich?
Mich an einer kompakten IDE erfreuen die mir viel erspart dank
reichhaltiger LIBs mal besser mal schlechter programmiert und nicht
meckern.
Gerne da wo es nötig ist den nano auf ein Steckbrett stecken Sensoren
oder Aktoren ran und nutzen, wie hier, siehe Bild.
Bis jetzt klappte ja Nokia sowie I2C Scan mit Erkennung, RTC DS3231, RTC
DS1307, I2C PCF8574(a), OLED, PT5822, DHT22/11, DS18B20, 433 MHz funken
mit der RCswitch LIB, sowie I2C EEPROM mit Adresserkennung (die 3
Adressbits) und Leertest und Größentest, mit dem Nokia 5110 Display als
Rückmeldung am Nano328p und am ESP32(WEMOS LOLIN32)
Während die meisten Routinen bei EEPROM immer 5ms bis 10ms Wartezeit
einlegen nach Byte schreiben, habe ich die Routinen optimiert und frage
das EEPROM ab ob es wieder ansprechbar ist, spart viel Zeit.
Ich meckere nicht nur ich helfe mir selber wenn ich was finde denn im
Netz gesucht habe ich reichlich und finde immer wieder dieses doofe
delay(5) bei EEPROM write, dabei ist die Lösung wirklich nicht schwer:
1
voidmy_i2c_eeprom_wait_ready(void){
2
Wire.setClock(I2C_CLOCK_LOW);
3
// Wait until EEPROM gives ACK again.
4
// this is a bit faster than the hardcoded 5 milli
hier muss ich noch statt das #define MY_I2C_EEPROM_ADDRESS ändern zur
echten gefunden EEP_ADDRESS Variablen denn damit hatte ich mich selber
mal ausgetrickst, die A0-A2 müssen ja nicht immer offen oder geschlossen
sein!
I2C_CLOCK_LOW/HIGH gibts ja von früher nur 100kHz dann kamen schnellere
Chips mit 400kHz und nun gehts bei einigen noch schneller, das EEPROM
gehörte bis jetzt zu den Lahmen deswegen setze ich dort den Takt herab.
Ein PCF8574 spielt locker mit 400kHz.
In der Adafruit GFX LIB fiel mir auf das das '~' <ALT 126> hier im
Editor und auf allen meinen Rechnern bis zum Raspi einwandfrei mittig
sitzt in der Arduino IDE und im Notepad++, in der DefaultFonts von der
Henning Karlson LIB LCD5110_Basic auch, aber in der GFX LIB von Adafruit
an den oberem Pixelrand klebt, das habe ich nach mühsamer Suche auch für
mich "korrigiert", nun kann man streiten wo das '~' sitzen soll oben
unten in der Mitte? (deswegen korrigiert in Gänsefüsschen).
LG und peace an alle!
Εrnst B. schrieb:> sid schrieb:>> 1023>> An dieser Stelle der obligatorische Hinweis: Ein 10-Bit ADC kann 2¹⁰> verschiedene Werte ausgeben. Deswegen ist jeder Schritt 1/1024 vom> Messbereich groß.>> Aber vermutlich rede ich an der Stelle gegen eine Wand. Es gibt auch> Leute, die nie verstehen werden, warum an einer Hand 5 Finger sind aber> nur 4 Zwischenräume dazwischen...
auch wenn ich dich verstehe und 0-1023 = 1024 Werte umfasst ist der
höchste Messwert den mir mein ADC bei Vref liefert 1023 und genau den
nehme ich zur Berechnung, jeder Step kleiner ist Vref/1023 weil Vref =
Vref = 1023 als Maximum dann wäre allenfalls ADC = 0 eben Vref/1024 aber
das ist mir dann auch sowas von egal, man misst halt nicht um 0 war
schon immer so, immer am Skalenendwert auch als es noch SpiegelMeßgeräte
analog gab.
Pucki geh spielen wenn Ausgewachsene debattieren, nach Streiten ist mir
nicht mal!
Εrnst B. schrieb:> Aber vermutlich rede ich an der Stelle gegen eine Wand
Das nicht, aber hier in diesem Thread redest du in den leeren Raum weil
das gerade keinen interessiert. Wir haben haben gerade andere Sorgen.
Stefan ⛄ F. schrieb:> Wir haben haben gerade andere Sorgen.
Nu lassen Sie uns doch mal in Ruhe, Frau Hansen! Wir stehen hier vor
einer ganz anderen Problematik!