INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Analogwert bei Änderung anpassen ?
30.09.2014, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2014 19:55 von Marc2014.)
Beitrag #9
RE: Analogwert bei Änderung anpassen ?
Danke sehr guter Tipp Wink

Hier das Ergebnis ;
Code:
Channel 1:0
Channel 2:0
Channel 1:781
Channel 2:783
Channel 1:781
Channel 2:781
Channel 1:781
Channel 2:781
Channel 1:781
Channel 2:783
Channel 1:781
Channel 2:781
Channel 1:781
Channel 2:783
Channel 1:781
Channel 2:783
Channel 1:781
Channel 2:781
Channel 1:787
Channel 2:781
Channel 1:781
Channel 2:781
Channel 1:781
Channel 2:783
Channel 1:781
Channel 2:781
Channel 1:787
Channel 2:783
Channel 1:781
Channel 2:781
Channel 1:781
Channel 2:781
Channel 1:1334
Channel 2:957
Channel 1:1334
Channel 2:957
Channel 1:1329
Channel 2:957
Channel 1:1327
Channel 2:957
Channel 1:1334
Channel 2:956
Channel 1:1333
Channel 2:956
Channel 1:1327
Channel 2:956
Channel 1:1326
Channel 2:956
Channel 1:1334
Channel 2:957
Channel 1:1333
Channel 2:957
Channel 1:1327
Channel 2:956
Channel 1:1330
Channel 2:956
Channel 1:1333
Channel 2:957
Channel 1:1334
Channel 2:957
Channel 1:1327
Channel 2:957
Channel 1:1327
Channel 2:956
Channel 1:1333
Channel 2:956
Channel 1:1333
Channel 2:956
Channel 1:1327
Channel 2:956
Channel 1:1333
Channel 2:957
Channel 1:1331
Channel 2:956
Channel 1:1327
Channel 2:957
Channel 1:1329
Channel 2:957
Channel 1:1334
Channel 2:956
Channel 1:1334
Channel 2:957
Channel 1:1330
Channel 2:956
Channel 1:1327
Channel 2:957
Channel 1:1333
Channel 2:957
Channel 1:1334
Channel 2:956
Channel 1:1326
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:957
Channel 1:956
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:951
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:957
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:956
Channel 1:0
Channel 2:951
Channel 1:0
Channel 2:956
Channel 1:0

Habe noch etwas gefunden:

Habe im Internet öfters gelesen dass die Signale wohl im Bereich von :

1000uS and 2000uS liegen das deckt sich ja mit den Daten der online Anleitung.

Ich hänge mal noch ein paar Bilder an die von Interesse sein könnten.


   


   

Link:

http://letsmakerobots.com/content/read-p...rx-arduino

Das kommt schon in die Richtung allerdings hab ich ja nur 2 Kanäle ?

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 21:01
Beitrag #10
RE: Analogwert bei Änderung anpassen ?
Hi,
kannst Du das Teil dazu bringen, mal den ganzen möglichen Bereich abzufahren?
Wenn nicht, dann würde ich mal alles was unter 800 liegt auf "0" Mappen und dann proportional bis 1500 auf 255, alles darüber auch auf 255.
Also in etwa:
map(<Dein pulseIn-Wert>, 800, 1500, 0, 255)
Das was dabei rauskommt dann direkt auf einen PWM-Ausgang...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 21:08
Beitrag #11
RE: Analogwert bei Änderung anpassen ?
Das kann ich nicht ohne RC Fernsteuerung ;/

Ich werde aber morgen nochmal so gut wie möglich testen und deinen Rat befolgen.

Ich melde mich dann mit den Neuigkeiten Smile

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 21:19
Beitrag #12
RE: Analogwert bei Änderung anpassen ?
Hi,
eins habe ich noch vergessen: Wenn pulseIn mit 0 zurückkommt, dann das ganze bleiben lassen. D.h. in dem Fall kein analogWrite machen. (...aber wenn die map-Funktion mit 0 zurückkommt, dann schon.)
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 21:58
Beitrag #13
RE: Analogwert bei Änderung anpassen ?
Hi Thorsten,

das habe ich nicht verstanden wie wenn die map mit 0 kommt?

////////

Ich habe mir jetzt nochmal Gedanken gemacht und mir ist eine Idee gekommen mit der es gehen sollte:

Die Bereiche sind jetzt klar : ( das muss man jetzt für jede Seite machen ) links / rechts und schon müsste es im "panzer" Modus laufen.

1000 / 1500 / 2000

unten / Mittelstellung / oben

rückwerts / stop / vorwärts


Ich habe jetzt mal was geschrieben das normaler weise gehen müsste:

Aber ein Problem gibt es da noch
wenn ich die Motoren rückwärts laufen lasse dann habe ich ja nur die -255 PWM die müsste ich aber 1 zu 1 in positive 0-255 PWM umwandeln bevor ich diese auf den Eingang vom 293L gebe. Wie mache ich das am sinnvollsten?

Hier mein code: (umgetestet)

Code:
// RC-Empfänger Signale umwandeln für DC 293L Controller.
// Test 1.1


const int CH1 = 10;          
const int pwmrechts = 3;                        // Motoren "rechts" Geschwindigkeit ( PWM ).

const int CH3 = 11;          
const int pwmlinks  = 5;                        // Motoren "links"  Geschwindigkeit ( PWM ).


const int motorenrechts_rechtslauf  = 4;        // Motoren "rechts" ( rechtslauf ).
const int motorenrechts_linkslauf   = 9;        // Motoren "rechts"  ( linkslauf ).                                    

const int motorenlinks_rechtslauf   = 7;        // Motoren "links"  ( rechtslauf ).
const int motorenlinks_linkslauf    = 8;        // Motoren "links"   ( linkslauf ).

int links;
int rechts;

void setup() {
  
  Serial.begin(9600);
  
pinMode(motorenrechts_rechtslauf, OUTPUT);      
pinMode(motorenrechts_linkslauf , OUTPUT);
pinMode(motorenlinks_rechtslauf , OUTPUT);
pinMode(motorenlinks_linkslauf  , OUTPUT);

// pinMode(pwmrechts, OUTPUT);
// pinMode(pwmlinks , OUTPUT);

    
  }

void loop() {
  
links  = map(CH1, 1000, 2000, -255, 255);              // Motoren auf der linken  Seite / Geschwindigkeit linke  Seite.

rechts = map(CH3, 1000, 2000, -255, 255);              // Motoren auf der rechten Seite / Geschwindigkeit rechte Seite.

//#######################################################################      <<<<         MOTOREN LINKE SEITE        >>>>     ################################################################################​##############


if (links > 0 ) {
  
  digitalWrite(motorenlinks_linkslauf  , LOW);
  digitalWrite(motorenlinks_rechtslauf , HIGH);
  
  analogWrite(pwmlinks, links);
  
  }

if (links < 0 ) {
  
  digitalWrite(motorenlinks_rechtslauf , LOW);
  digitalWrite(motorenlinks_linkslauf  , HIGH);

  
  // analogWrite(pwmlinks, links);      
  
  }


//#######################################################################      <<<<         MOTOREN RECHTE SEITE        >>>>     ################################################################################​##############


if (rechts > 0) {
  
  digitalWrite(motorenrechts_linkslauf , LOW);
  digitalWrite(motorenrechts_rechtslauf , HIGH);
  
  analogWrite(pwmrechts, rechts);

  
  }


if (rechts < 0) {
  
  digitalWrite(motorenrechts_linkslauf , HIGH);
  digitalWrite(motorenrechts_rechtslauf , LOW);
  
  // analogWrite(pwmrechts, rechts);

  
  }



  
}

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 22:47
Beitrag #14
RE: Analogwert bei Änderung anpassen ?
Hi,
mal ohne die Hardware 100% verstanden zu haben:

1. Du kannst natürlich nicht direkt sowas hinschreiben:
links = map(CH1, 1000, 2000, -255, 255);
Was Du meinst ist
links = map(pulseIn(CH1), 1000, 2000, -255, 255);
...oder so ähnlich.

2. Wenn das pulseIn 0 ergibt, dann darfst Du den Wert nicht verwenden. In dem Fall einfach alles so lassen wie es ist (für die entsprechende Seite).

3. analogWrite(pwmlinks, links * -1); // ganz einfach

4. Statt jeweils
analogWrite(pwmlinks, links);
würde ich einfach mit else arbeiten. Sonst bleiben die Motoren nie stehen. (Der Fall links == 0 ist dann abgedeckt.)

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 11:25
Beitrag #15
RE: Analogwert bei Änderung anpassen ?
hey Wink

Das mit dem pulseIn(CH1) löst einen Fehler aus, was mache ich da falsch?

Ich habe jetzt den code nur mal für CH1 auf den Vorschlag von dir angepasst das man den unterschied sieht.

Der Fehler kommt dann:

Arduino: 1.5.7 (Mac OS X), Board: "Arduino Uno"

sketch_oct01a.ino: In function 'void loop()':
sketch_oct01a.ino:38:25: error: too few arguments to function 'long unsigned int pulseIn(uint8_t, uint8_t, long unsigned int)'
In file included from sketch_oct01a.ino:5:0:
/Applications/Entwicklung/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/cores/arduino/Arduino.h:232:15: note: declared here
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
^

Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen


Hier der code :


Code:
// RC-Empfänger Signale umwandeln für DC 293L Controller.
// Test 1.1


const int CH1 = 10;          
const int pwmrechts = 3;                        // Motoren "rechts" Geschwindigkeit ( PWM ).

const int CH3 = 11;          
const int pwmlinks  = 5;                        // Motoren "links"  Geschwindigkeit ( PWM ).


const int motorenrechts_rechtslauf  = 4;        // Motoren "rechts" ( rechtslauf ).
const int motorenrechts_linkslauf   = 9;        // Motoren "rechts"  ( linkslauf ).                                    

const int motorenlinks_rechtslauf   = 7;        // Motoren "links"  ( rechtslauf ).
const int motorenlinks_linkslauf    = 8;        // Motoren "links"   ( linkslauf ).

int links;
int rechts;

void setup() {
  
  Serial.begin(9600);
  
pinMode(motorenrechts_rechtslauf, OUTPUT);      
pinMode(motorenrechts_linkslauf , OUTPUT);
pinMode(motorenlinks_rechtslauf , OUTPUT);
pinMode(motorenlinks_linkslauf  , OUTPUT);

// pinMode(pwmrechts, OUTPUT);
// pinMode(pwmlinks , OUTPUT);

    
  }

void loop() {
  
links  = map(pulseIn(CH1), 1000, 2000, -255, 255);     // Motoren auf der linken  Seite / Geschwindigkeit linke  Seite. ! ( DAS LÖST EIENEN FEHLER AUS). !

rechts = map(CH3, 1000, 2000, -255, 255);              // Motoren auf der rechten Seite / Geschwindigkeit rechte Seite.

//#######################################################################      <<<<         MOTOREN LINKE SEITE        >>>>     ################################################################################​##############


if (links > 0 ) {
  
  digitalWrite(motorenlinks_linkslauf  , LOW);
  digitalWrite(motorenlinks_rechtslauf , HIGH);
  
  analogWrite(pwmlinks, links);
  
  }

if (links < 0 ) {
  
  digitalWrite(motorenlinks_rechtslauf , LOW);
  digitalWrite(motorenlinks_linkslauf  , HIGH);

  
  analogWrite(pwmlinks, links * -1);  
  
  }


//#######################################################################      <<<<         MOTOREN RECHTE SEITE        >>>>     ################################################################################​##############


if (rechts > 0) {
  
  digitalWrite(motorenrechts_linkslauf , LOW);
  digitalWrite(motorenrechts_rechtslauf , HIGH);
  
  analogWrite(pwmrechts, rechts);

  
  }


if (rechts < 0) {
  
  digitalWrite(motorenrechts_linkslauf , HIGH);
  digitalWrite(motorenrechts_rechtslauf , LOW);
  
  analogWrite(pwmrechts, rechts * -1);

  
  }



  
}


also wenn ich -255 habe und das BSP von dir verwende:

analogWrite(pwmlinks, links * -1);

das wandelt die negativen Werte im Bereich bis -255 in positive ?

Habe ich das richtig verstanden?


( würde ich einfach mit else arbeiten. Sonst bleiben die Motoren nie stehen. (Der Fall links == 0 ist dann abgedeckt. )

das habe ich auch nicht verstanden was du mir damit sagen wolltest :/


Gruß Marc Wink

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2014, 11:35
Beitrag #16
RE: Analogwert bei Änderung anpassen ?
Hi,
schau Dir mal die Doku zu pulseIn an, dann müsstest Du selbst auf die Lösung für die Fehlermeldung kommen.

Ja "links * -1" macht aus einem negativem "links" ein positives. Ich dachte, das lernt man schon in der Schule.

Zu dem "else": Überlege Dir mal, was Dein Sketch z.B. macht, wenn links == 0.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 543 06.07.2016 14:59
Letzter Beitrag: Binatone
  wie Parameter der seriellen Schnittstelle anpassen? avoid 6 482 29.04.2016 16:44
Letzter Beitrag: avoid
  Änderung von Bibliotheken chhec 9 1.252 04.02.2016 09:51
Letzter Beitrag: hotsystems
  Gute Sketches für das EthernetShield für das WiFiShield anpassen. getiteasy 4 1.113 21.11.2014 20:13
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste