Forum: Mikrocontroller und Digitale Elektronik 4 Stepper mit einem Arduino ansteuern


von D. C. (joker89)


Lesenswert?

Guten Abend ,

Ich habe ein Problem mit meinem Programm , ich steuere 4 Stepper über 
Driver mit einem Arduino an . Bewegen sollen sich die wenn man die 
Joysticks bewegt . In 0 Stellung (512) sollten sie verweilen . Alles 
soweit so gut , wenn ich nur einen Joystick programmiere funktioniert 
alles so wie es soll . Definiere ich 4 Stepper bewegen sich bei allen 
Joysticks alle Stepper gleichzeitig und nicht der Stepper der den 
Joystick zugewiesen ist
1
#include <AccelStepper.h> 
2
3
//Stepper Definieren 
4
AccelStepper stepper0(1,4,3);             // 1= Driver , 4= Step , 3= F/R
5
AccelStepper stepper1(1,7,6);             // 1= Driver , 7= Step , 6= F/R
6
AccelStepper stepper2(1,10,9);            // 1= Driver , 10= Step , 9= F/R
7
AccelStepper stepper3(1,13,12);            // 1= Driver , 13= Step , 12= F/R
8
9
#define ANALOG_IN0 A0 
10
#define ANALOG_IN1 A1 
11
#define ANALOG_IN2 A2 
12
#define ANALOG_IN3 A3 
13
14
15
void setup() 
16
{ 
17
  stepper0.setMaxSpeed(10000); 
18
  stepper0.setAcceleration(10000);
19
20
  stepper1.setMaxSpeed(10000);
21
  stepper1.setAcceleration(1000);
22
  
23
  stepper2.setMaxSpeed(10000);
24
  stepper2.setAcceleration(1000);
25
26
  stepper3.setMaxSpeed(10000);
27
  stepper3.setAcceleration(1000);
28
29
  
30
  Serial.begin(9600); 
31
  analogReadResolution(10);
32
} 
33
 
34
void loop() 
35
{ 
36
  // Read new position Stepper 1 
37
 
38
  int analog_in0 = analogRead(ANALOG_IN0); 
39
  stepper0.setSpeed(512-analog_in0) ;
40
41
 
42
  // Read new position Steppper 2
43
 
44
  int analog_in1 = analogRead(ANALOG_IN1); 
45
  stepper1.setSpeed(512-analog_in1) ;
46
47
  
48
   
49
  // Read new position Stepper 3
50
 
51
  int analog_in2 = analogRead(ANALOG_IN2); 
52
  stepper2.setSpeed(512-analog_in2) ;
53
    
54
  
55
  // Read new position Stepper 4
56
 
57
  int analog_in3 = analogRead(ANALOG_IN3); 
58
  stepper3.setSpeed(512-analog_in3) ;
59
  
60
  stepper0.run(); 
61
  stepper1.run(); 
62
  stepper2.run(); 
63
  stepper3.run(); 
64
65
  
66
67
 
68
  }


Ich verwende die  <AccelStepper.h> für die Ansteuerung .

Wo liegt das Problem ? Ich habe das Gefühl das die Zuweisungen der Potis 
zu den Stepper nicht passt ? Zumindestens hat es den Anschein . .... 
Gruß

: Bearbeitet durch User
von Stephan H. (stephan-)


Lesenswert?

Dominik Loher schrieb:
> Definiere ich 4 Stepper bewegen sich bei allen
> Joysticks alle Stepper gleichzeitig und nicht der Stepper der den
> Joystick zugewiesen ist

ja wie nun ?
Du definierst 4 Stepper und wunderst Dich das alle 4 laufen?
Läuft doch alles prima !

Kopfkratz..

von spess53 (Gast)


Lesenswert?

Hi

>stepper0.setSpeed(512-analog_in0) ;

Glaubst du, das bei dem Joystick in Nullstellung immer 512 gelesen wird?

MfG Spess

von D. C. (joker89)


Lesenswert?

spess53 schrieb:
> Hi
>
>>stepper0.setSpeed(512-analog_in0) ;
>
> Glaubst du, das bei dem Joystick in Nullstellung immer 512 gelesen wird?
>
> MfG Spess

Nein ist mir auch klar , er zuckt ab und zu leicht ! Darum geht es nicht 
das weiß ich und ist mir bewusst ....Schritt für Schritt darum kümmere 
ich mich anschließend :) .

Hab ich einen Fehler in der Definition beim anmelden der Eingänge ect 
gemacht ? Die Werte der einzelnen Eingänge greifen in einem anderen 
Eingang ein .Ich weiß nicht wie ich das sinnvoll erklären soll -.-

von D. C. (joker89)


Lesenswert?

Stephan Henning schrieb:
> Dominik Loher schrieb:
>> Definiere ich 4 Stepper bewegen sich bei allen
>> Joysticks alle Stepper gleichzeitig und nicht der Stepper der den
>> Joystick zugewiesen ist
>
> ja wie nun ?
> Du definierst 4 Stepper und wunderst Dich das alle 4 laufen?
> Läuft doch alles prima !
>
> Kopfkratz..

Ich definiere 4 Stepper und 4 Joysticks , wird Joystick 1 bewegt soll 
sich Stepper1 Bewegen . Es bewegen sich leider aber alle !!!

Ich habe gerade Serial.println(A0) mir anzeigen lassen . Er gibt einen 
Wert von 54 aus !!! Das muss doch ein Programm Fehler sein . Der Wert 
bleibt konstant , er ändert sich auch nicht beim bewegen eines Joysticks 
.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

Gurgel sagt zu setSpeed:

Parameters

rpms: the speed at which the motor should turn in rotations per minute - 
a positive number (long)
^^^^^^^^^^^^^^^^^^^^^^

Der ADC gibt Werte zwischen 0 und 1023 aus. Das passt nicht zu deinem 
512-analog_in0.

MfG Spess

von D. C. (joker89)


Lesenswert?

spess53 schrieb:
> Hi
>
> Gurgel sagt zu setSpeed:
>
> Parameters
>
> rpms: the speed at which the motor should turn in rotations per minute -
> a positive number (long)
> ^^^^^^^^^^^^^^^^^^^^^^
>
> Der ADC gibt Werte zwischen 0 und 1023 aus. Das passt nicht zu deinem
> 512-analog_in0.
>
> MfG Spess

Servus Spess,

ich versteh das gerade nicht , also die Funktion funktioniert mit einem 
Stepper einwandfrei .Bei mehreren Steppern funktioniert es nicht mehr

Ja der ADC gibt einen Wert von 0-1023 aus , wird der Joystick nicht 
bewegt gibt der ADC 511 (+-2) aus . Nach der Rechnung liegt also an der 
Funktion Setspeed in diesem Moment ein Wert von  ca 0 an das heißt der 
Motor bewegt sich nicht . Er wird bewegt bei größer 0 im Uhrzeigersinn 
und kleiner 0 gegen den Uhrzeigersinn .


Gruß

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>Nach der Rechnung liegt also an der
>Funktion Setspeed in diesem Moment ein Wert von  ca 0 an das heißt der
>Motor bewegt sich nicht . Er wird bewegt bei größer 0 im Uhrzeigersinn
>und kleiner 0 gegen den Uhrzeigersinn .

Wenn ich Gurgel trauen darf wird die Richtung mit 'steps' eingestellt:

Parameters

steps: the number of steps to turn the motor - positive to turn one 
direction, negative to turn the other (int)

MfG Spess

von D. C. (joker89)


Lesenswert?

Ja genau das entspricht ja meinem obigen Kommentar .Steht eine 0 darin , 
bewegt er sich nicht . steht eine +500 darin bewegt er sich mit 500 
Steps jede Sekunde im Uhrzeigersinn . Würde -500 darin stehen bewegt er 
sich mit 500 Steps gegen den Uhrzeigersinn

Das Programm funktioniert mit einem Stepper -> #include <AccelStepper.h>

//Stepper Definieren
AccelStepper stepper1(1, 4, 3);           // 1= Driver , 4= Step , 3= 
F/R



void setup()
{
  stepper1.setMaxSpeed(10000);
  stepper1.setAcceleration(10000);



  Serial.begin(9600);
  analogReadResolution(10);
}

void loop()
{
  // Read new position Stepper 1

  int analog_in = analogRead(A1);
  stepper1.setSpeed(2*(511 - analog_in)) ;






  stepper1.run()
  ;}

Wenn ich noch einen Stepper mit einbinde , übersprechen sich die 
Eingänge .

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Dann probier halt erst mal rauszufinden, ob das Problem bei den Joystick 
Werten liegt oder bei den Steppern.

Den Ansatz hast du ja schon gemacht. println ist dein Freund. Jetzt 
musst du halt einen Schritt weiter gehen. Wenn du nicht weißt, was im 
Programm vor sich geht, dann muss man das rausfinden
1
void loop() 
2
{ 
3
  int analog_in0 = 512 - analogRead(ANALOG_IN0); 
4
  int analog_in1 = 512 - analogRead(ANALOG_IN1); 
5
  int analog_in2 = 512 - analogRead(ANALOG_IN2); 
6
  int analog_in3 = 512 - analogRead(ANALOG_IN3); 
7
8
  Serial.print( A0 ); Serial.print( ' ' );
9
  Serial.print( A1 ); Serial.print( ' ' );
10
  Serial.print( A2 ); Serial.print( ' ' );
11
  Serial.print( A3 ); Serial.println( "" );
12
13
  stepper0.setSpeed(analog_in0) ;
14
  stepper0.run(); 
15
16
  stepper1.setSpeed(analog_in1) ;
17
  stepper1.run(); 
18
19
  stepper2.setSpeed(analog_in2) ;
20
  stepper2.run(); 
21
22
  stepper3.setSpeed(analog_in3) ;
23
  stepper3.run(); 
24
}

Das probierst du mal aus und siehst dir mal die Zahlenwerte an, die du 
von den Joysticks bekommst. Wenn die in Ordnung sind, dann muss man sich 
die Stepper man näher ansehen. Wenn die Werte nicht in Ordnung sind, 
dann muss man mal die Verdrahtung der Joysticks kontrollieren bzw. auch 
mal kontrollieren, ob nicht die Schrittmotoren dir die 
Versorgungsspannung versauen.
Du hast eine Serielle Schnittstelle, über die du Ausgaben machen kannst. 
Nutze sie, damit dir dein Programm helfen kann, zu verstehen was vor 
sich geht!

: Bearbeitet durch User
von D. C. (joker89)


Lesenswert?

Karl Heinz schrieb:
> Dann probier halt erst mal rauszufinden, ob das Problem bei den Joystick
> Werten liegt oder bei den Steppern.
>
> Den Ansatz hast du ja schon gemacht. println ist dein Freund. Jetzt
> musst du halt einen Schritt weiter gehen. Wenn du nicht weißt, was im
> Programm vor sich geht, dann muss man das rausfinden
>

>
>   Serial.print( A0 ); Serial.print( ' ' );
>   Serial.print( A1 ); Serial.print( ' ' );
>   Serial.print( A2 ); Serial.print( ' ' );
>   Serial.print( A3 ); Serial.println( "" );

Schon mal einen Dank an dich , C** ist bei mir leider schon wieder über 
ein Semester vorbei . Ich bin mir gerade nicht mehr sicher worin der 
unterschied zwischen .print() und .println() liegt .
.print() für ASCII und .println für jeden Zahlenwert ?
Wieso hast du einmal so und dann mal so ?

von D. C. (joker89)


Lesenswert?

Karl Heinz schrieb:
> Dann probier halt erst mal rauszufinden, ob das Problem bei den Joystick
> Werten liegt oder bei den Steppern.
>
> Den Ansatz hast du ja schon gemacht. println ist dein Freund. Jetzt
> musst du halt einen Schritt weiter gehen. Wenn du nicht weißt, was im
> Programm vor sich geht, dann muss man das rausfinden
>

>
>   Serial.print( A0 ); Serial.print( ' ' );
>   Serial.print( A1 ); Serial.print( ' ' );
>   Serial.print( A2 ); Serial.print( ' ' );
>   Serial.print( A3 ); Serial.println( "" );

Schon mal einen Dank an dich , C** ist bei mir leider schon wieder über 
ein Semester vorbei . Ich bin mir gerade nicht mehr sicher worin der 
Unterschied zwischen .print() und .println() liegt .
.print() für ASCII und .println für jeden Zahlenwert ?
Wieso hast du einmal so und dann mal so ?

Okay wie schon vermutet , die Analogen-Werte passen mal gar nicht . ->" 
54 55 56 57". Beim bewegen des Joysticks ändern Sie sich auch nicht ,der 
Roboter bewegt sich aber irgendwie ganz langsam bzw die Achsen .

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

>>Schon mal einen Dank an dich , C** ist bei mir leider schon wieder über
>>ein Semester vorbei . Ich bin mir gerade nicht mehr sicher worin der
>>Unterschied zwischen .print() und .println() liegt .

Student, und so wenig Ahnung?
Du hast doch einen Browser vor dir, mit dem du in diesem Forum 
Schreibst.
Rechts oben ist eine Sucheingabe. Stell die auf Google und gib "Arduino 
println" ein. Schon landest du auf der Referenz, welche die Unterschiede 
beschreibt.

Da wäre schneller gewesen, als deinen Text hier einzutippern.

Achja, println ist wie print, nur das ein Zeilenumbruch noch hinten dran 
kommt.

von D. C. (joker89)


Lesenswert?

PittyJ schrieb:
>>>Schon mal einen Dank an dich , C** ist bei mir leider schon wieder über
>>>ein Semester vorbei . Ich bin mir gerade nicht mehr sicher worin der
>>>Unterschied zwischen .print() und .println() liegt .
>
> Student, und so wenig Ahnung?
> Du hast doch einen Browser vor dir, mit dem du in diesem Forum
> Schreibst.
> Rechts oben ist eine Sucheingabe. Stell die auf Google und gib "Arduino
> println" ein. Schon landest du auf der Referenz, welche die Unterschiede
> beschreibt.
>
> Da wäre schneller gewesen, als deinen Text hier einzutippern.
>
> Achja, println ist wie print, nur das ein Zeilenumbruch noch hinten dran
> kommt.

Zum ersten , man muss doch nicht gleich beleidigend werden, ich mach 
immer noch Fachrichtung Industrietechnik , hier kommt C** und MC 
ziemlich kurz bzw MC gar nicht vor  ! Zum zweiten fragen darf man doch 
noch , man kann auch schnell mal was falsch verstehen sicherlich hab ich 
in Google gesucht .
Und danke für die Antwort

Langsam habe ich das Gefühl das dieser Ominöse neue ATMEL ARM Cortex-M3 
das Problem ist .
Neu am Markt , und die Software funktioniert auch nicht einwandfrei .

Die Joysticks sind an +3.3Volt und Ground angeschlossen und die 
anzapfungen am Eingang AO,A1....

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Dominik Loher schrieb:

>> Achja, println ist wie print, nur das ein Zeilenumbruch noch hinten dran
>> kommt.
>
> Zum ersten , man muss doch nicht gleich beleidigend werden, ich mach
> immer noch Fachrichtung Industrietechnik

erstens ist das völlig wurscht was du studierst und zweitens gilt auch 
dann genau dasselbe.
Für die Arduino Funktionen und Klassen gibt es Doku. Gerade wenn du 
Indistrietechnik studierst, solltest du lernen als erstes immer nach 
Doku zu suchen.


> , hier kommt C**

du könntest wenigstens den Namen deiner Programmiersprache richtig 
schreiben. Die Sprache heißt C++ und nicht C**

> und MC
> ziemlich kurz bzw MC gar nicht vor  !

Und?
Was ändert das daran, dass es Doku dafür gibt und du dort reinschauen 
könntest?
Was denkst du was ich gemacht habe? Und dabei programmier ich noch nicht 
einmal für einen Arduino.

> Zum zweiten fragen darf man doch
> noch

Das kommt auf die Frage an.
Ja es gibt sie: die dummen Fragen, auf die man eine dumme Antwort 
kriegt.

> Die Joysticks sind an +3.3Volt und Ground angeschlossen und die
> anzapfungen am Eingang AO,A1....

Ok.
Und, was sagen die Werte?


> Langsam habe ich das Gefühl das dieser Ominöse neue
> ATMEL ARM Cortex-M3 das Problem ist

Ehe du diese Möglichkeit in Betracht ziehst, solltest du erst mal davon 
ausgehen, dass das Problem bei dir liegt. So wie in 99.5% aller anderen 
Fälle.

Falls die Werte verrückt spielen:
Hast du schon mal die Werte beobachtet, wenn du die Motoren NICHT 
angeschlossen hast? Nur für den Fall, dass es sich noch nicht 
rumgesprochen hat: Motoren können Schweine sein, wenn es um die 
Versorgungsspannung geht.

: Bearbeitet durch User
von Mike (Gast)


Lesenswert?

Dominik Loher schrieb:
> Ich habe gerade Serial.println(A0) mir anzeigen lassen . Er gibt einen
> Wert von 54 aus !!!

Warum sollte sich die Pinnummer auch ändern?

von Karl H. (kbuchegg)


Lesenswert?

Mike schrieb:
> Dominik Loher schrieb:
>> Ich habe gerade Serial.println(A0) mir anzeigen lassen . Er gibt einen
>> Wert von 54 aus !!!
>
> Warum sollte sich die Pinnummer auch ändern?

Ach Mist.
Und ich Dolm kopier den Dreck auch noch weiter und merks nicht.
1
  int analog_in0 = 512 - analogRead(ANALOG_IN0); 
2
  int analog_in1 = 512 - analogRead(ANALOG_IN1); 
3
  int analog_in2 = 512 - analogRead(ANALOG_IN2); 
4
  int analog_in3 = 512 - analogRead(ANALOG_IN3); 
5
6
  Serial.print( analog_in0 ); Serial.print( ' ' );
7
  Serial.print( analog_in1 ); Serial.print( ' ' );
8
  Serial.print( analog_in2 ); Serial.print( ' ' );
9
  Serial.print( analog_in3 ); Serial.println( "" );
10
...

Danke, Mike.

: Bearbeitet durch User
von D. C. (joker89)


Lesenswert?

Ich suche mit heute schon 3 Tage nach dem Fehler , irgendwann ist man 
einfach am verzweifeln ....
Erfahrung ist durch nichts zu ersetzen und man überfliegt als Anfänger 
einfach mal wichtige Details

Werden mehrere Eingänge abgefragt stimmen die Werte nicht mehr ...

Hab ich schon geschrieben es werden diese Werte ausgegeben A0= 54 A1= 55 
A2=56 A3=57

von Karl H. (kbuchegg)


Lesenswert?

Dominik Loher schrieb:

> Hab ich schon geschrieben es werden diese Werte ausgegeben A0= 54 A1= 55
> A2=56 A3=57

Ja, weil das die internen Pinnummern sind und nicht die Werte, die 
eingelesen werden.

Wenn du mittels
1
  int analog_in0 = 512 - analogRead(ANALOG_IN0);
dir den Wert vom Analogeingang A0 in die Variable analog_in0 holst, dann 
wäre es ganz gut, dann auch den Wert von analog_in0 auszugeben um zu 
sehen, welcher Wert jetzt kommt.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

> und man überfliegt als Anfänger einfach mal wichtige Details

Ich tu mir da jetzt schwer etwas dazu zusagen, immerhin hab ich selbst 
nicht aufgepasst.
Aber wenn sich Werte plötzlich ändern bzw. nicht das sind was sie 
eigentlich sein sollten, dann sollte man mal etwas kritisch in sein 
eigenes Programm sehen und auch die Möglichkeit in Betracht ziehen, dass 
man sich bei der Ausgabe der Werte vertan hat.

von D. C. (joker89)


Lesenswert?

Karl Heinz schrieb:
> Dominik Loher schrieb:
>
>> Hab ich schon geschrieben es werden diese Werte ausgegeben A0= 54 A1= 55
>> A2=56 A3=57
>
> Ja, weil das die internen Pinnummern sind und nicht die Werte, die
> eingelesen werden.
>
> Wenn du mittels
>
1
>   int analog_in0 = 512 - analogRead(ANALOG_IN0);
2
>
> dir den Wert vom Analogeingang A0 in die Variable analog_in0 holst, dann
> wäre es ganz gut, dann auch den Wert von analog_in0 auszugeben um zu
> sehen, welcher Wert jetzt kommt.

 Hab ich auch schon versucht , es bleibt alles beim alten . Hab auch mal 
pausen dazwischen gesetzt ....

von D. C. (joker89)


Lesenswert?

Karl Heinz schrieb:
>> und man überfliegt als Anfänger einfach mal wichtige Details
>
> Ich tu mir da jetzt schwer etwas dazu zusagen, immerhin hab ich selbst
> nicht aufgepasst.
> Aber wenn sich Werte plötzlich ändern bzw. nicht das sind was sie
> eigentlich sein sollten, dann sollte man mal etwas kritisch in sein
> eigenes Programm sehen und auch die Möglichkeit in Betracht ziehen, dass
> man sich bei der Ausgabe der Werte vertan hat.


Damit hab ich mich den letzten tagen befasst .... ein zweiter hat auch 
schon darüber geschaut !
Das Programm ist ja ansich echt ein Witz , es ist weder kompliziert ....

Wenn ich nur die Analogen Eingänge abfrage und diese Ausgebe , passiert 
das selbe . Gruß

von Karl H. (kbuchegg)


Lesenswert?

D. Chung schrieb:
> Karl Heinz schrieb:
>> Dominik Loher schrieb:
>>
>>> Hab ich schon geschrieben es werden diese Werte ausgegeben A0= 54 A1= 55
>>> A2=56 A3=57
>>
>> Ja, weil das die internen Pinnummern sind und nicht die Werte, die
>> eingelesen werden.
>>
>> Wenn du mittels
>>
1
>>   int analog_in0 = 512 - analogRead(ANALOG_IN0);
2
>>
>> dir den Wert vom Analogeingang A0 in die Variable analog_in0 holst, dann
>> wäre es ganz gut, dann auch den Wert von analog_in0 auszugeben um zu
>> sehen, welcher Wert jetzt kommt.
>
>  Hab ich auch schon versucht , es bleibt alles beim alten .

Das kann nicht sein.
Deine Ausgaben können nicht 54, 55, 56, und 57 sein und sich nicht 
verändern.
Überleg doch mal ein bischen wenn es dich 3 Tage lang schon nicht 
stutzig macht, dass die Werte aufsteigend sind.

: Bearbeitet durch User
von D. C. (joker89)


Lesenswert?

Karl Heinz schrieb:
> D. Chung schrieb:
>> Karl Heinz schrieb:
>>> Dominik Loher schrieb:
>>>
>>>> Hab ich schon geschrieben es werden diese Werte ausgegeben A0= 54 A1= 55
>>>> A2=56 A3=57
>>>
>>> Ja, weil das die internen Pinnummern sind und nicht die Werte, die
>>> eingelesen werden.
>>>
>>> Wenn du mittels
>>>
1
>>>   int analog_in0 = 512 - analogRead(ANALOG_IN0);
2
>>>
>>> dir den Wert vom Analogeingang A0 in die Variable analog_in0 holst, dann
>>> wäre es ganz gut, dann auch den Wert von analog_in0 auszugeben um zu
>>> sehen, welcher Wert jetzt kommt.
>>
>>  Hab ich auch schon versucht , es bleibt alles beim alten .
>
> Das kann nicht sein.
> Deine Ausgaben können nicht 54, 55, 56, und 57 sein und sich nicht
> verändern.
> Überleg doch mal ein bischen wenn es dich 3 Tage lang schon nicht
> stutzig macht, dass die Werte aufsteigend sind.

Ja sicher macht es mich stuzig. Hast du denn eine Lösung ?  Ich habe 
doch das Programm online gestellt .

Mich macht mehr stuzig , wieso stürzt das Programm ständig ab ( 1.5.5 
-r2 Beta ) die früheren Versionen funktionierten einwandfrei nur leider 
bin ich mit dem DUE an diese Version gebunden .
Wieso funktioniert die Übertragung nur jedes 3te mal ?
Wieso muss ich die Reset taste genau zu diesem Zeitpunkt am Arduino 
drücken damit das Programm überhaupt überspielt werden kann  , wobei das 
nirgends beschrieben ist ...

von D. C. (joker89)


Angehängte Dateien:

Lesenswert?

Die Variante für 4 Eingänge -.-


So ich hab gerade versucht nur einen Eingang abzufragen , das 
funktioniert jetzt auch nicht mehr .

Die Console gibt jetzt auch 54 aus ...

: Bearbeitet durch User
von Dominic A. (neo123)


Lesenswert?

Du musst die Eingänge zuerst auch noch einlesen.
1
void loop() 
2
{
3
  int analog_in0 = 512 - analogRead(ANALOG_IN0); 
4
  int analog_in1 = 512 - analogRead(ANALOG_IN1); 
5
  int analog_in2 = 512 - analogRead(ANALOG_IN2); 
6
  int analog_in3 = 512 - analogRead(ANALOG_IN3); 
7
8
  Serial.print( analog_in0 ); Serial.print( ' ' );
9
  Serial.print( analog_in1 ); Serial.print( ' ' );
10
  Serial.print( analog_in2 ); Serial.print( ' ' );
11
  Serial.print( analog_in3 ); Serial.println( "" );
12
}

Edit:
Bei deinem Code gibst du ja auch die Defines aus. Diese bleiben 
natürlich immer gleich.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

D. Chung schrieb:
> mit dem DUE

Und ich wollte Dir schon Code für den ATmega328 nahelegen, weil Du immer 
mit 10 Bit Werten vom ADC gerechnet hast.
Der ADC vom Due hat 12 Bit Auflösung, wenn ich das Datenblatt richtig 
lese.

von D. C. (joker89)


Lesenswert?

m.n. schrieb:
> D. Chung schrieb:
>> mit dem DUE
>
> Und ich wollte Dir schon Code für den ATmega328 nahelegen, weil Du immer
> mit 10 Bit Werten vom ADC gerechnet hast.
> Der ADC vom Due hat 12 Bit Auflösung, wenn ich das Datenblatt richtig
> lese.

Ja stimmt , aber mit dem Befehl
  analogReadResolution(10);
wird auf 10 festgesetzt .

Im Auslieferungszustand ist er aber auch auf 10 fixiert . Ich wollte nur 
nochmal sicher gehen

von D. C. (joker89)


Angehängte Dateien:

Lesenswert?

Danke ich mache jetzt lieber mal eine Pause , ich habe bei den versuchen 
mit 4 Analogen Werten ausgeben die #define in void setup() geschrieben . 
....

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Hm, habe gerade meinen Due angeschlossen. Minimalprogramm:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int analog_in0 = analogRead(A0);
  int analog_in1 = analogRead(A1);
  int analog_in2 = analogRead(A2);
  int analog_in3 = analogRead(A3);

  Serial.print(analog_in0);
  Serial.print(" / ");
  Serial.print(analog_in1);
  Serial.print(" / ");
  Serial.print(analog_in2);
  Serial.print(" / ");
  Serial.print(analog_in3);
  Serial.println();

  delay(200);
}

Die Eingänge sind unbeschaltet, und floaten da so rum

350  448  518 / 223
350  449  518 / 223
351  450  520 / 224
352  451  521 / 225
353  452  522 / 225


Alles Ok, an einem ATSAM kann es nicht liegen, wenn es bei dir nicht 
geht.

von D. C. (joker89)


Lesenswert?

>
> Alles Ok, an einem ATSAM kann es nicht liegen, wenn es bei dir nicht
> geht.

Hast du die Probleme mit dem Programm übertragen auch ?

von PittyJ (Gast)


Lesenswert?

Nein, nachdem der tty-Port eingestellt war, ging alles problemlos.

Version 1.5.2 unter Macos.

von D. C. (joker89)


Lesenswert?

PittyJ schrieb:
> Nein, nachdem der tty-Port eingestellt war, ging alles problemlos.
>
> Version 1.5.2 unter Macos.

Danke dann werd ich diese Version mal testen .

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.