Probleem simpele codering

Arduino specifieke Software
Berichten: 3
Geregistreerd: 24 Dec 2014, 18:29

Probleem simpele codering

Berichtdoor NeleS » 25 Dec 2014, 12:31

Het is de eerste keer dat ik iets maak met Arduino, maar kom er niet goed uit. Het is namelijk zo dat er veel errors optreden. Voorheen, met ander kleine dingen te proberen lukte het vrij foutloos, maar met alles samen te zetten faalt het telkens. Kan iemand mij helpen?

de Code:

#include <Adafruit_NeoPixel.h> // LED-bibliotheek toevoegen

#include <TinkerKit.h> //tinkerkit-bbliotheek toevoegen

TKLed L(O0);

Adafruit_NeoPixel Led = Adafruit_NeoPixel (1, L, NEO_GRB + NEO_KHZ800);

TKButton B(I0);
TKPotentiometer P(I1);
TKHallSensor HS (I2);
TKTouchSensor TS (I3);



void setup() {
L.begin();
L.show();
Serial.begin(9600);
}
// commando's voor Led


void loop() {
if (B.readSwitch() == HIGH || TS.readSwitch() == HIGH || HS.polarity() == NORTH) {
L.setPixelColor(0, 255, 0, 0);
L.show();
}

else {
L.setPixelColor(0, 0, 255, 0);
L.show();
}

L.setBrightness((P.read()/4));
L.show;

}



De foutmelding:

sketch_dec24a.ino:7:70: error: no matching function for call to 'Adafruit_NeoPixel::Adafruit_NeoPixel(int, TKLed&, int)'
sketch_dec24a.ino:7:70: note: candidates are:
In file included from sketch_dec24a.ino:1:0:
/Users/Nele/Documents/Arduino/libraries/Adafruit_NeoPixel/Adafruit_NeoPixel.h:49:3: note: Adafruit_NeoPixel::Adafruit_NeoPixel(uint16_t, uint8_t, uint8_t)
Adafruit_NeoPixel(uint16_t n, uint8_t p=6, uint8_t t=NEO_GRB + NEO_KHZ800);
^
/Users/Nele/Documents/Arduino/libraries/Adafruit_NeoPixel/Adafruit_NeoPixel.h:49:3: note: no known conversion for argument 2 from 'TKLed' to 'uint8_t {aka unsigned char}'
/Users/Nele/Documents/Arduino/libraries/Adafruit_NeoPixel/Adafruit_NeoPixel.h:44:7: note: Adafruit_NeoPixel::Adafruit_NeoPixel(const Adafruit_NeoPixel&)
class Adafruit_NeoPixel {
^
/Users/Nele/Documents/Arduino/libraries/Adafruit_NeoPixel/Adafruit_NeoPixel.h:44:7: note: candidate expects 1 argument, 3 provided
sketch_dec24a.ino: In function 'void setup()':
sketch_dec24a.ino:17:3: error: 'class TKLed' has no member named 'begin'
sketch_dec24a.ino:18:5: error: 'class TKLed' has no member named 'show'
sketch_dec24a.ino: In function 'void loop()':
sketch_dec24a.ino:26:7: error: 'class TKLed' has no member named 'setPixelColor'
sketch_dec24a.ino:27:7: error: 'class TKLed' has no member named 'show'
sketch_dec24a.ino:31:7: error: 'class TKLed' has no member named 'setPixelColor'
sketch_dec24a.ino:32:7: error: 'class TKLed' has no member named 'show'
sketch_dec24a.ino:35:5: error: 'class TKLed' has no member named 'setBrightness'
sketch_dec24a.ino:36:5: error: 'class TKLed' has no member named 'show'
Error compiling.

Advertisement

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

Re: Probleem simpele codering

Berichtdoor nicoverduin » 25 Dec 2014, 12:57

Hoewel er hier vele fantasierijke creatievelingen zijn.... is het misschien handig als je eerst verteld wat je eigenlijk probeert te realiseren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 3
Geregistreerd: 24 Dec 2014, 18:29

Re: Probleem simpele codering

Berichtdoor NeleS » 25 Dec 2014, 14:51

sorry, inderdaad misschien wel handig ;)

Ik werk met tinkerkit. (libery is toegevoegd)

in de startpositie zou het Ledje gewoon groen moeten zijn. (daar heb ik de libery Adafruit_Neopixel voor nodig, deze is toegevoegd)
Het is dus de bedoeling dat als de magneet van de hallsensor vandaan wordt gehaald OF als de touchsensor wordt aangeraakt OF als de drukknop wordt ingedrukt dat het Ledje rood gaat branden.
Het zou ook mogelijk moeten zijn om met een lineaire potentiometer de sterkte van de Led altijd te kunnen aanpassen.

alvast bedankt!

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

Re: Probleem simpele codering

Berichtdoor nicoverduin » 25 Dec 2014, 16:10

Werkt die adafruit wel op de tinkerkit?
Bij de creatie van de RGB led doe je dat met de library van adafruit en geef je hem een naam Led. In het programma refereer je naar de variabele L. Dat gaat niet echt werken. L kent alleen de tinkerkit functies die aan die klasse hangen. Led kent de Adafruit functies die bij de Neopixel klasse behoren.
Beetje als het gemeentehuis... 2 loketten... op loket1 kun je alleen een paspoort vragen en moet je bepaalde gegevens aanleveren. Op loket2 vraag je huursubsidie aan..... Nu probeer je bij loket2 een paspoort aan te vragen.... Dan stort het hele systeem (jouw programma dus) in elkaar......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 3
Geregistreerd: 24 Dec 2014, 18:29

Re: Probleem simpele codering

Berichtdoor NeleS » 27 Dec 2014, 13:23

Ooh, dankjewel! nu snap ik het denk ik!
we hebben via school een ledje gekregen dat inderdaad niet van Tinkerkit is. (zij hebben blijkbaar enkel aparte LED's, onze Led kan verschillende kleuren maken)

Ik krijg echter nog een paar kleine meldingen:

sketch_dec24a.ino:7:40: error: expected primary-expression before '(' token
sketch_dec24a.ino:7:49: error: expected primary-expression before ',' token
sketch_dec24a.ino: In function 'void loop()':
sketch_dec24a.ino:36:9: error: statement cannot resolve address of overloaded function
Error compiling.

de code is nu:


#include <Adafruit_NeoPixel.h> // LED-bibliotheek toevoegen

#include <TinkerKit.h> //tinkerkit-bbliotheek toevoegen

TKLed Led(O0);

Adafruit_NeoPixel L = Adafruit_NeoPixel(1, TKLed, NEO_GRB + NEO_KHZ800);

TKButton B(I0);
TKPotentiometer P(I1);
TKHallSensor HS (I2);
TKTouchSensor TS (I3);



void setup() {
L.setPixelColor(0, 0, 255, 0);
L.show();
Serial.begin(9600);
}
// commando's voor Led


void loop() {
if (B.readSwitch() == HIGH || TS.readSwitch() == HIGH || HS.polarity() == NORTH) {
L.setPixelColor(0, 255, 0, 0);
L.show();
}

else {
L.setPixelColor(0, 0, 255, 0);
L.show();
}

L.setBrightness((P.read()/4));
L.show;

}

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

Re: Probleem simpele codering

Berichtdoor nicoverduin » 27 Dec 2014, 15:11

a) je hebt een ledje.... De Neopixel leds zijn een ledstrip met speciale leds die een ingebouwde chip hebben (of apart op de strip). Dat is seriële communicatie op (injouw geval) 800khz. Dat gaat niet werken met een gewoon ledje hoor....... Wat voor type LED is het eigenlijk?

cpp code
Adafruit_NeoPixel L = Adafruit_NeoPixel(1, TKLed, NEO_GRB + NEO_KHZ800);

TKLed is geen pin maar een beschrijving van een pin klasse. En dus wordt dit statement (terecht) afgekeurd door de compiler.

Als jij slechts een RGB ledje gebruikt, heb je 4 pinnen. Een voor Rood, Een voor Groen en een voor Blauw. Daarnaast heb je niet aangegeven of deze een common Anode of common Kathode heeft. Als je een beetje fatsoenlijk wilt dimmen, kun je het beste een aparte weerstand voor elke kleur nemen. De waarde is afhankelijk van de stroom die max door die LED mag (per kleur). Tenzij de school jouw een segment heeft gegeven uit een Led strip?

Ik stel voor dat:
a) je aangeeft wat voor hardware je nu precies aan het gebruiken bent?
b) wat voor LED?
Ik krijg nu een beetje het gevoel dat we appels en peren door elkaar aan het halen zijn.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 97 gasten