Arduino + PWM + Wireless

ik heb een klijn probleem. ik heb een code om een PWM signaal mooi omteschrijven naar vaste en `contstante´ waares dit gaat als volgt

// Alles met //zijn mogelijke aantekeningen dus let daar maar niet op.

volatile long count1; volatile long servo1;

define int0 (PORTE & 16)

//int Input = (servo1,DEC);

void handleInterrupt() { if ((digitalRead(2))) count1=micros(); else servo1=micros()-count1; }

void setup() { Serial.begin(9600); pinMode(2,INPUT); attachInterrupt(0,handleInterrupt,CHANGE); } void loop() { //Serial.print(count1); //Serial.print(' '); //Serial.println(servo1,DEC); Serial.println(servo1,DEC); //Serial.print(Input); }

Dit werkt piema ik krijg een contstante waarde tussen de 1550 en 1530 dus hier ben ik zeer blij mee. nu moet ik deze waarden (servo1,DEC) mappen dus wil ik het gelijk maaken aan een waarde Input met het command (int Input = [servo1,DEC);]

maar als ik dit doe met deze code:

// Alles met //zijn mogelijke aantekeningen dus let daar maar niet op.

volatile long count1; volatile long servo1;

define int0 (PORTE & 16)

int Input = (servo1,DEC);

void handleInterrupt() { if ((digitalRead(2))) count1=micros(); else servo1=micros()-count1; }

void setup() { Serial.begin(9600); pinMode(2,INPUT); attachInterrupt(0,handleInterrupt,CHANGE); } void loop() { //Serial.print(count1); //Serial.print(' '); //Serial.println(servo1,DEC); Serial.print(Input); }

Dan krijg ik alleen de waarde 10 wat moet ik doen om dit op te lossen ??? Hartelijk dank eric

EricNientker gelieve de code tags te gebruiken want dat leest wat lekkerder. Ik snap niet echt wat je wilt doen maar probeer deze loop eens

void loop()
{
  //Serial.print(count1);
  //Serial.print(' ');
  //Serial.println(servo1,DEC);
  int Input = (servo1,DEC);
    Serial.print(Input);
}

en verwijder de lijn

int Input = (servo1,DEC);

bovenaan Met vriendelijke groet jantje

Beste Jantje,
het project waar ik nu aan werk is de motor van een bestuurbare bood te kunnen aansturen met een wireless.
de code die u heeft gestuurt probeer ik al de hele dag. maar inplaats van dat ik dan een waarde van Standaart (1530-1550) en met extreemen (1100-1900) word de waarde constant 10 dit getal kan ik ook niet veranderen door de pook van de controler heen en weer te bewegen. ik zoek dus voor een anderen code om zodat ik hier na de waarde kan mappen van 0; 1023

Mvg
Eric Nientker

sketch_feb02a.ino (401 Bytes)

kan je dan niet beter van een rc library vertrekken? https://github.com/jantje/libraries/tree/master/RCLib Met vriendelijke groet Jantje

Geagte jantje, ik heb al een hele fijnen en acuraaten code om van mijn PWM signaal een constant signaal te maken. ik weet alleen niet hoe ik deze waarde (servo1,DEF) kan mappen en er nieuwen statements mee kan maken. Zoals de snelheid van de motor.

Mvg eric nientker

heb je men voorgestelde code al geprobeerd?

Beste jantje,

ik heb uw voorgestelde programa geprobeert en ik krijg inderdaat de zelfde cijfers (min=1150 neutraal= 1550 max=1950) maar ik loop met deze code weer een beetje tegen het zelfde probleem aan. hoe kan ik deze waarde die uit het arduinno komt zo bewerken dat ik deze waarden kan veranderen met "Command {Map}".

map zou je in dit geval kunnen gebruiken als (gewoon hier neergeschreven dus zal wel iets fout aan zijn) int mapped= map(Input,1150,1950,-255,255);

Beste jantje,

als ik deze "code" invoeg int Input = (servo1,DEC); int mappedInp= map(Input,1600,1950,0,255); Serial.println(mappedInp);

Dan krijg ik als uitkomste alleen maar -1215 inplaats van verschillende waardes waneer ik de pook van mijn RC controller heen en weer beweeg. ik snap niet hoe dit komt heeft u eenigsins een idee ?

Mvg Eric Nientker

En als je serial.println(Input); doet. Varieert die wel? Anders ben je een beetje voor jan met de korte achternaam bezig op het verkeerde punt te zoeken.

Beste Nico Verduin.

Nee dat is juist het hellen probleem als ik doe wat u zegt int Input = (servo1,DEC); Serial.println(Input); Dan krijg ik alleen het getal 10 als uitkomst en deze verandert ook niet als ik met de controler pook heen en weer beweeg.

Mvg Eric Nientker

EricNientker: Beste jantje,

ik heb uw voorgestelde programa geprobeert en ik krijg inderdaat de zelfde cijfers (min=1150 neutraal= 1550 max=1950) maar ik loop met deze code weer een beetje tegen het zelfde probleem aan. hoe kan ik deze waarde die uit het arduinno komt zo bewerken dat ik deze waarden kan veranderen met "Command {Map}".

EricNientker: Beste Nico Verduin.

Nee dat is juist het hellen probleem als ik doe wat u zegt int Input = (servo1,DEC); Serial.println(Input); Dan krijg ik alleen het getal 10 als uitkomst en deze verandert ook niet als ik met de controler pook heen en weer beweeg.

Mvg Eric Nientker

Dit lijkt me conflicterende informatie. Kan je dat voor een beter begrip uitleggen? Met vriendelijke groet Jantje

Beste Jantje,

Het spijt mij dat ik zo vaag en gehaast in mijn aanpak ben geweest na nogmaals rustig over uw Liberary te gaan en alles aandagtig te lezen ben ik er ongeveer achter gekomen hoe het programma werkt. ik heb nu tenminste een uitkomst die ik wil en ik krijg een variable waarde tussen de 0-225 die gewenst is. hartelijk dank en nogmaals mijn excusses voor de minder dan tact volle aanpak

Mvg
Eric Nientker

Nog een klijn vraagje: als ik een analog poort 5 volt wil laten leveren moet ik de poort dan aan 1023 of aan 225 gelijk moeten stellen?

Wederom wat vaag :) Een analoge poort is uitsluitend een INPUT. Dus je leest een analoge waarde tussen de 0 en 5V. En je krijgt terug een unsigned int met een waarde tussen de 0 en 1023. (elk stapje is 5V / 1024).

PWM (Pulse Width Modulation) varieert de breedte van een puls (de zogenaamde duty cycle). De frequentie is iets van 500-600 Hz). Om er een spanning van te maken kun je een klein condensatortje tussen de pin en GND doen, De meeste servo schakelingen hebben dat circuit al ingebouwd. De PWM werkt met een waarde van 0-255. Hoe hoger de waarde, hoe hoger de spanning.

Beste Nico Verduin

Hartelijk dank voor het spoedigen antword en zoals u mogelijk ziet ben ik nog niet erg lang bezig met het gebruiken van arduino. ik heb geprobeert zoveel mogelijk te leren via het internet maar helaas kwam de deadline van mijn project snel dichter bij en ben ik met mijn gelimiteerde kennis naar hulp gaan schreuwen. maar uiteindelijk heb ik presies wat ik nodig heb en ben ik zeer blij met de andworden die ik heb gekregen. nogmaals excuses voor de slechte vraagen die ik heb gesteld

Mvg Eric Nientker