pwm geregeld door druk in if functie.
21 berichten
• Pagina 1 van 3 • 1, 2, 3
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
pwm geregeld door druk in if functie.
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?
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
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
Re: pwm geregeld door druk in if functie.
- 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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pwm geregeld door druk in if functie.
Maak je toch gewoon een tabel?
cpp code
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;
}
Re: pwm geregeld door druk in if functie.
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
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
shooter@home.nl
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
Re: pwm geregeld door druk in if functie.
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?..
"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?..
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pwm geregeld door druk in if functie.
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".
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".
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
Re: pwm geregeld door druk in if functie.
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pwm geregeld door druk in if functie.
Maar geef dan aan wat je nu precies wilt.
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
Re: pwm geregeld door druk in if functie.
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.
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.
- arendtje88
- Berichten: 11
- Geregistreerd: 23 Mrt 2016, 21:14
Re: pwm geregeld door druk in if functie.
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.
21 berichten
• Pagina 1 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 21 gasten