invalid conversion from 'int*' to 'int' [-fpermissive]

goede dag,

ik heb wat code geschreven om 6 LEDjes de ‘wave’ te laten maken. (Arduino heeft 6 PWM kanalen)
hiervoor roep ik een subroutine aan, Arduino noemt dit een functie.
bij terugkeer naar het hoofdprogramma gaat het mis, met bovenstaande melding.
hieronder mijn code. met commentaar.
vermoedelijk een kleine fout, maar ik zie het niet. HELP!!
eeuwige dank valt u ten deel.

-=-=-=-=-=-
/*
knightrider -3-
6 ledjes op PWM die de ‘wave’ maken
*/
int ledjes[6] = {3, 5, 6, 9, 10, 11}; // de ledjes in een array
int helder[6]= {1, 1, 1, 1, 1, 1}; // elk ledje zijn eigen helderheid
int fade[6] = {1, 1, 1, 1, 1, 1}; // de faderichting van elk ledje
int timer = 10; // de brandtijd van elk ledje
int lednr = 0;

void setup(){
// alle pootjes in één keer tot uitgang bombarderen en hoog zetten
for (lednr=0;lednr<6;lednr++) {
pinMode(ledjes[lednr], OUTPUT), digitalWrite(ledjes[lednr], HIGH); // alle leds zijn uit.
}
}

void loop(){
for (lednr=0;lednr<6;lednr++) {
helder[lednr] = helder[lednr] + fade[lednr]helderheid(lednr, helder[lednr]);
/
helderheid (PWM) groter/kleiner +/- functie subroutine

hierboven wordt de nieuwe waarde per LEDje aangepast, in de functie aanroep
gaat het fout.
de helderheid is het gewenste PWM signaal voor het LEDje lopend van 0 tot 255
als 255 of 0 wordt bereikt, wordt de richting omgekeerd door fade[lednr]
van polariteit te wisselen -1 wordt 1 of 1 wordt -1

helderheid(lednr, helder[lednr]) wordt aangeroepen
de meegegeven waarden zijn het nummer van de onderhande LED en de huidige helderheid.
*/
if((helder[lednr] == 0) || (helder[lednr] == 255)) { // if statement, || = or functie
fade[lednr] = -fade[lednr]; // waarde wordt tegengesteld, optellen wordt aftrekken.
}
analogWrite(ledjes[lednr] , helder[lednr]); // de waarde van de helderheid wordt weggeschreven
delay (timer);
}
}

/* subroutine helderheid bepalen
hieronder mijn probleem de functie helderheid met de twee opgegeven waarden
integer lednummer het onderhande LEDje A en de bijhorende helderheid B
/
int helderheid(int A,int B){
A = (A+1)10; // array loopt van 0…5, 360 graden/6 ledjes = hoek 60 gr
B = sin((6.1415 * B)/60); // de sinus van de bijhorende hoek
B = 63
((lednr+1)
(lednr+1)); // de gedtallen 6.1415 en 63 komen van internet.
return helder; // deze regel is fout,
// invalid conversion from ‘int*’ to ‘int’ [-fpermissive]
// wat moet ik hier mee? en hoe moet het dan wel??
}
-=-=-=-=-=-

groeten, Dré Jansen

Volgens mij is die B=sin((6.1415*b)/60) nooit een integer. en de volgende regel is ook B = ? ofwel moeten beide regels omgekeerd staan, of die regel met sin heeft geen enkel nut want wordt niet meer gebruikt

In jouw functie geef jij de variabele helder terug. Echter heb jij op globaal niveau helder gedefinieerd als een tabel. En als je verder niets specificeerd wordt dat vertaald door de compiler als &helder[0] of te wel het adres van de eerste int in de tabel helder. En dat is een pointer dus. En dat is dus int*. In jouw functie beschrijving echter zeg je dat deze functie een int terug geeft. Dus is er een fout ontstaan immers een pointer naar een int is iets anders als de feitelijke int zelf. Daarnaast heeft vadeveni volkomen gelijk over jouw formules. Je doet er goed aan (en zeker als je begint) om de parameters in lokale variabelen op te slaan als ook lokale variabelen te nemen voor de berekeningen. Op het moment dat je met sin() en cos() etc gaat werken geven deze een float(0 terug. Als je dit omzet naar een int direct zou het zomaar kunnen zijn dat je berekeningen in het geheel niet meer kloppen. Je doet er beter aan om beide parameters om te zetten naar een float en alle berekeningen uit te voeren in float en pas op het laatste momen om te zetten in een int. En die geef je dan terug.

vadeveni en nicoverduin,

hartelijk dank voor de antwoorden. ondertussen heb ik de variabelen dat A en B in float veranderd, en return B is de eind regel.

de LEDjes faden nu wel, maar niet zoals bedoeld, dat is zeker geen wave. nu concentreer ik me op de formule, als jullie mij daarin behulpzaam willen zijn, doet dat mijn dank tot onmetelijke hoogte verder groeien.

groeten, Dré

ik denk dat die 6.1415 3.14159 moet zijn fwel pi en die 60 moet 180 zijn ook kan 2pien dat is 6.28 dan moet het 360 zijn.

Overigens is de helderheid van een led zeker niet lineair, dus beter een tabel met de waarden en dan rechte lijntjes ertussen met map. sin is erg moeilijk voor een simpele processor en kost dus veel tijd.