Potentiometer an Mikrocontrollter

Gast #6284640
Lesenswert?

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);
Angehängte Dateien:
Gast #6284643
Lesenswert?

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
Gast #6284736
Lesenswert?

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)
2
{
3
    return (x - xmin) * (tomax - tomin) / (xmax - xmin) + tomin;
4
}
(falls ich mich  jetzt nicht vertue heisst das...)
wenn Du die nur hier nutzt kannst Du die auch direkt auf die 10bit 
deines AD Wandlers fixieren
1
long mapTenBit(long x, long tomin, long tomax)
2
{
3
    return x * (tomax - tomin) / 1023 + tomin;
4
} 
5
// dann natürlich aufrufen mit
6
delayTime = mapTenBit(val, minT, maxT);

'sid
Gast #6284764
Lesenswert?

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
Gast #6284784
Lesenswert?

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.
Gast #6285192
Lesenswert?

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..
Gast #6285198
Lesenswert?

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..
Gast #6285201
Lesenswert?

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>
#6285229
Lesenswert?

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
Gast #6285234
Lesenswert?

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...).
Gast #6285244
Lesenswert?

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:_ADC
http://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.
Gast #6285247
Lesenswert?

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.
Gast #6285259
Lesenswert?

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.
Gast #6285279
Lesenswert?

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?
Gast #6285288
Lesenswert?

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.
Gast #6285294
Lesenswert?

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.
Gast #6285307
Lesenswert?

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().
Gast #6285312
Lesenswert?

[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.
Gast #6285337
Lesenswert?

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.
Gast #6285342
Lesenswert?

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
Gast #6285347
Lesenswert?

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.
Gast #6285392
Lesenswert?

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?
Gast #6285402
Lesenswert?

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).
Gast #6285418
Lesenswert?

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.

:((
Gast #6285419
Lesenswert?

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!
Gast #6285423
Lesenswert?

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.
Gast #6285424
Lesenswert?

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!
Gast #6285433
Lesenswert?

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!
Gast #6285446
Lesenswert?

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?
#6285447
Lesenswert?

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.
Gast #6285448
Lesenswert?

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.
Gast #6285451
Lesenswert?

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?
Gast #6286005
Lesenswert?

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
Gast #6286009
Lesenswert?

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 :))
Gast #6286021
Lesenswert?

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.
Gast #6286025
Lesenswert?

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
Gast #6286030
Lesenswert?

HBose schrieb:
> Dann mach mal
1
void setup()    
2
{                          
3
    pinMode( 6 , OUTPUT);    
4
}    
5

6
void loop()
7
{
8
     int poti = analogRead(A0);     
9
     analogWrite(6 , map (poti , 0 , 1023 , 0 , 255 ) );   
10
}

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.
Gast #6286047
Lesenswert?

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
#6286052
Lesenswert?

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
Gast #6286057
Lesenswert?

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
Gast #6286069
Lesenswert?

Wie wäre das denn. ;)

Ist die Programmiersprache in der ICH arbeite.

https://www.b4x.com/android/forum/threads/set-servo-angle-via-potentiometer-and-show-on-display.78411/

Hier wird über ein Poti ein Servo angesteuert und die Stellung auf den 
Display angezeigt.

Ca. 20 Zeilen Code (ich habe nicht gezählt) in einer Art Visual-Basic.

Inklusiv Schaltung (Fritzing).


Gruß

   Pucki
Gast #6286109
Lesenswert?

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
Angehängte Dateien:
Gast #6286124
Lesenswert?

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.
Gast #6286400
Lesenswert?

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
Gast #6286440
Lesenswert?

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.
Gast #6286444
Lesenswert?

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.
Gast #6286458
Lesenswert?

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.
Gast #6286465
Lesenswert?

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?
Gast #6286517
Lesenswert?

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)
Gast #6286537
Lesenswert?

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.
Gast #6287044
Lesenswert?

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
Gast #6287055
Lesenswert?

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.
#6287062
Lesenswert?

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.
Gast #6287063
Lesenswert?

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
Gast #6287073
Lesenswert?

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.
#6287077
Lesenswert?

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.
Gast #6287097
Lesenswert?

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.
Gast #6287098
Lesenswert?

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.
#6287312
Lesenswert?

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.
#6287333
Lesenswert?

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
Gast #6287345
Lesenswert?

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.
Gast #6287368
Lesenswert?

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.
Gast #6287413
Lesenswert?

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.
Gast #6287424
Lesenswert?

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.
Gast #6287430
Lesenswert?

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.....
Gast #6287472
Lesenswert?

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.
#6287963
Lesenswert?

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:
1
In file included from D:\atmel\__ARDUINO__\libraries\Adafruit-GFX\Adafruit_MonoOLED.cpp:20:0:
2

3
D:\atmel\__ARDUINO__\libraries\Adafruit-GFX\Adafruit_MonoOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
4

5
 #include <Adafruit_I2CDevice.h>
6

7
          ^~~~~~~~~~~~~~~~~~~~~~
8

9
compilation terminated.
10

11
exit status 1
12
Fehler beim Kompilieren für das Board Arduino Nano.
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.
Gast #6287980
Lesenswert?

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.
#6287990
Lesenswert?

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...
#6288054
Lesenswert?

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
char meine_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
void my_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
5
  do {
6
    Wire.beginTransmission(MY_I2C_EEPROM_ADDRESS); Wire.requestFrom(MY_I2C_EEPROM_ADDRESS, 1);
7
    Wire.read();
8
  }while(Wire.endTransmission());
9
  Wire.setClock(I2C_CLOCK_HIGH);
10
} // void my_i2c_eeprom_wait_ready(void) {

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!
Angehängte Dateien:
#6288061
Lesenswert?

Ε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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren