pwm geregeld door druk in if functie.

Arduino specifieke Software
Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 27 Mrt 2016, 21:43

hallo,

ik heb nu al een tijdtje lopen testen en google maar ik kom er niet met een goede manier uit.

mijn punt:

in een IF functie waarbij tussen een gemapte sensorvalue van 30 & 40.
Moet een pwm pin komen die in deze tijd van 100% naar 80% gaat.
Dit moet niet op tijd, maar in verhouding staan met de druk.
Maar in een volgde functie moet ik het zelfde idee doen, maar dan van 40 tot 50, en van 80% naar 30%.

Heeft iemand hier een (goede en simpele) oplossing voor/idee?


Code: Alles selecteren
if (sensorValue >= 30 && sensorValue <= 40){}{         // waardes aanpassen aan druksensors dit zijn de voorwwaardes voor korotoftonen
          analogWrite(Ruis, 50 );                            // waardes moeten nog worden aangepast aan de werelijk behoefte, dit door te testen met appart programma?

Advertisement

Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

Re: pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 27 Mrt 2016, 22:48

Code: Alles selecteren
Ruis = map(sensorValue, 29, 41, 204, 255);


dit doe ik op het moment,

de if functie vervult toch de functie dat de waardes hier niet buiten kunnen komen. dus dat is geen probleem.

maar bij veel gebruik zijn het gewoon belachelijk veel zinnen.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: pwm geregeld door druk in if functie.

Berichtdoor nicoverduin » 27 Mrt 2016, 23:27

Maak je toch gewoon een tabel?
cpp code
struct drukMapping {
uint16_t minWaarde;
uint16_t maxWaarde;
uint8_t pwmMin;
uint8_t pwmMax;
};
drukMapping mappingTabel[aantalEntries] = {
{ 0 , 29, 180, 203},
{ 30, 40, 204, 255},
.....
}

zoeken in tabel

uint8_t zoeken(uint16_t sensorWaarde) {

uint8_t resultaat = 0;

for (int16 i = aantalEntries-1; i >=0; i--){

if (sensorWaarde >= mappingTabel[i].minWaarde){
//
// waarde gevonden
//
resultaat = map(sensorWaarde, mappingTabel[i].minWaarde, mappingTabel[i].maxWaarde, mappingTabel[i].pwmMin, mappingTabel[i].pwmMax);
//
// en klaar met zoeken
//
break;
}
}
return resultaat;
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: pwm geregeld door druk in if functie.

Berichtdoor shooter » 28 Mrt 2016, 10:26

het kan nog simpeler:
0, 180,
30,204,
40,255,
50,190,
80,80,
100,0
voordeel is geen open delen en altijd een waarde.
de uitgangswaarde kun je ook mappen met bijv 0,100,0,255 dan wordt de tabel wat overzichtelijker.
let wel even op want nico gaat van de hoogste naar de laagste
paul deelen
shooter@home.nl

Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

Re: pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 28 Mrt 2016, 12:06

Zou ik een uitleg mogen hebben bij de tabel functie.

"uint16_t" waarom een byte waarde gebruiken? wat is de reden dat dat hier moet.

als mijn project zo door gaat, heb ik waarschijnlijk 3 tabelletjes nodig met 5 functies. (dit kan niet bij elkaar omdat de gegeven overlappend zijn)

Hoe moet ik dit inplenteren met de gegeven tabel?...

Op het moment zie ik wel wat er gebeurt.
maar waarom is de vraag?..

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: pwm geregeld door druk in if functie.

Berichtdoor nicoverduin » 28 Mrt 2016, 13:18

Nou als je deze simpele code niet begrijpt denk ik dat je mogelijk nog wat tutorials moet gaan doen.
Overigens was ik uitgegaan van de sensor waarde. Dus mag je ook uint8_t gebruiken.
En als jij beperkte specificaties geeft krijg je wat je vraagt. Nu heb je het ineens over 3 tabellen en 5 functies (waar over niets mis mee is).
Door het tabelletje van het einde terug te lopen heb je altijd de juiste mapping.
En mocht je hetzelfde soort werk moeten doen met meerdere tabellen kun je ook nog verschillende tabellen maken en dan alleen het begin adres van de tabel erbij doorgeven.
Maar zoals ik al eerder zei je specs zijn niet duidelijk dus geldt "garbage in = garbage out".
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

Re: pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 28 Mrt 2016, 13:34

dit was allemaal niet kwaad bedoelt.....
Ik vroeg me gewoon af waarom die byte waarde.
en tevens de tabelen/ 5 funcites kwamen voort uit u gegeven manier/ wat ik nu heb :)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: pwm geregeld door druk in if functie.

Berichtdoor nicoverduin » 28 Mrt 2016, 13:40

Maar geef dan aan wat je nu precies wilt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

Re: pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 28 Mrt 2016, 13:50

okee voor de goede orde.

ik heb atm dus 3 if functies waar 5 waardes in staan wel van 1:"(10-20, 20-30, 30-40, 50-60, 60-70), 2:(15-25,25-35,35-45,45-55,55-65,65-70) 3:(10-20,20-40,40-60,60-80,80-100)

De pin heet gewoon : sensorvalue en is al een gemapte functie van 0-250, <- dit ivm een calibratiefuncite die in mijn programma zit.

de pwm is bij elke stap 0-70, 70-100, 100, 100-80, 80-0 (%)
Dat is alle informatie dat ik heb, als u hier meer aan heeft/ een oplossing voor kan bieden.

Berichten: 11
Geregistreerd: 23 Mrt 2016, 21:14

Re: pwm geregeld door druk in if functie.

Berichtdoor arendtje88 » 28 Mrt 2016, 13:55

en ik zou graag iets willen dat ik in een IF funtie kan zetten waardoor dit automatisch wordt geregeld tussen deze "drukken" zonder al te veel lijnen tekst <- ibm mijn prgramma groote dat al redelijk formaat bezit nu.
Laatst gewijzigd door arendtje88 op 28 Mrt 2016, 14:06, in totaal 1 keer gewijzigd.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: iminelomao en 90 gasten