Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Arduino - LED raceb...
 
Deel:
Meldingen
Alles wissen

[Opgelost] Arduino - LED racebaan project

55 Berichten
3 Gebruikers
0 Reactions
8,654 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Haha, bedenk maar: we zijn allemaal eens begonnen als beginner. Vandaar dat ik er ook de link bij geplaatst heb die uitlegt hoe loops werken.

Voorheen had je:

for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1)

Dit wil zeggen; voor de int (=integer = gehele getallen) variable "whiteled", begin bij "0", zorg ervoor dat "whiteled" altijd kleiner blijft dan NUM_LEDS, en verhoog "whiteled" per keer met "1". Dus, deze loop telt van 0 tot NUM_LEDS en bewaard het getal in de variabele "whiteled".

De nieuwe regel:

for(int whiteLed = NUM_LEDS-1 ; whiteLed>=0; whiteLed--)

Voor de variabele "whiteled", begin bij "NUM_LEDS-1" (omdat we NUM_LEDS zelf willen vermijden), en zorg ervoor dat "whiteled" steeds met 1 verminderd wordt (--).


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

Hoi hans.

Na veel toveren gaat de led rechts om. Dit was niet zo moeilijk. Toen ben ik bezig gegaan aan de kleur verandering. Man man wat een ellende. Ik was al een uur bezig met programma erop te zetten. Met vertivieren was het oke maar hij wilde het niet doen. Helemaal naar het begin gegaan met FIRSTLIGHT maar nee hoor ook niet meer aan de gang te krijgen. Toen kwam ik erachter dat de datakabel van de print los was van de soldering. Grrrrrrrr. Dus weer helemaal van bigin beginnen. Na weer een lange tijd had ik alles aan de gang. 1 led rechtsom en met de kleur turquase. (Petronas kleur). Zo...op naar de volgende. Eens kijken of er een tweede ledje bij kan. Nog steeds even zonder potmeters. 


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Ik dacht er gisteren aan: bij die oude racebanen moest je altijd even langzamer gaan anders ketste het autootje schuin of zelfs van de baan af. Iets voor later om mee te rommelen 

Led 93 (Start/Finish), je zou daarvoor het volgende kunnen doen;

...
#DEFINE FINISH 93; // Definieer LEDje voor Start/Finish
#DEFINE MAXBRIGHTNESS_FINISH 150; // Maximum helderheid Finish LEDje.
#DEFINE MINBRIGHTNESS_FINISH 50; // Minimum helderheid Finish LEDje. #DEFINE BRIGHTNESS_STEP 20; // Toename/Afname helderheid: stap grootte
byte Dimmer = MINBRIGHTNESS_FINISH; // variabele om start/finish the laten dimmen boolean DimmingUp = True; // Begin met helderheid toename (False = Afname)
...
// This function sets up the ledsand tells the controller about them
void setup() {
    delay(2000);
    FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
}
void loop() {
   // Move a single white led 
   for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
    // **** Start/Finish LED * if (DummingUp) { if(Dimmer<MAXBRIGHTNESS_FINISH) {
    Dimmer=Dimmer+BRIGHTNESS_STEP;
  } else { DimmingUp = False;
  } } else { if(Dimmer>MINBRIGHTNESS_FINISH) { Dimmer=Dimmer-BRIGHTNESS_STEP; } else { DimmingUp = True; } // Zet Finish LED kleur; leds[FINISH].r=Dimmer; leds[FINISH].g=Dimmer; leds[FINISH].b=Dimmer; //
* Start/Finish LED ****
      // Turn our current led on to white, then show the leds
      leds[whiteLed] = CRGB::Red;
      // Show the leds (only one of which is set to white, from above)
      FastLED.show();
      // Wait a little bit
      delay(100);
      // Turn our current led back to black for the next loop around
      leds[whiteLed] = CRGB::Black;
   }
}

Ik heb dit (nog) niet kunnen testen, maar de Finish LED zou nu moeten gloeien zeg maar.

De "for" loop die je gebruikt is overigens iets wat later problemen gaat veroorzaken omdat je geen invloed hebt op het tempo.
We zullen tellers moeten gaan bijhouden voor elke auto.

Ik zit vandaag met een beetje tijd tekort dus misschien morgen meer.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Voor ik het vergeet - ik heb voor een van m'n neefjes een korte cursus in elkaar gedraaid die wat basis principes uitlegt voor Arduino Programmeren.
Misschien handig om door te lezen of als referentie te gebruiken als iets niet 100% duidelijk is.

Arduino Programmeren voor Beginners - Overzicht

Niet dat je de hele cursus door MOET lopen, maar het kan soms het e.e.a. uitleggen 


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

Thanks hans. Gaat ik zeker doen. Zal straks ook ff kijken naar jou code of die in plaats of erbij can komen in mijn programma.


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

hoi hans.

even een klein probleempje voor jou denk ik. als ik 00FFFF invoer dan krijg ik geen aqua maar dan krijg ik paars. het rare is dat als ik FF6347 invul dat de kleur wel klopt. of kan het liggen aan dat de helderheid te hoog staat. ik zal de code hieronder neerzetten zoals het nu goed loopt.

// Use if you want to force the software SPI subsystem to be used for some reason (generally, you don't)
// #define FASTLED_FORCE_SOFTWARE_SPI
// Use if you want to force non-accelerated pin access (hint: you really don't, it breaks lots of things)
// #define FASTLED_FORCE_SOFTWARE_SPI
// #define FASTLED_FORCE_SOFTWARE_PINS
#include "FastLED.h"

///////////////////////////////////////////////////////////////////////////////////////////
//
// Move a white dot along the strip of leds.  This program simply shows how to configure the leds,
// and then how to turn a single pixel white and then off, moving down the line of pixels.
//

// How many leds are in the strip?
#define NUM_LEDS 148

// Data pin that led data will be written out over
#define DATA_PIN 6

// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8

// This is an array of leds.  One item for each led in your strip.
CRGB leds[NUM_LEDS];

// This function sets up the ledsand tells the controller about them
void setup() {
 // sanity check delay - allows reprogramming if accidently blowing power w/leds
    delay(2000);

    
      FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
     
}

// This function runs over and over, and is where you do the magic to light
// your leds.
void loop() {
   // Move a single white led
   for(int whiteLed = NUM_LEDS-1 ; whiteLed>=0; whiteLed --) {
      // Turn our current led on to white, then show the leds
   
      leds[whiteLed].r = 0xFF;
      leds[whiteLed].g = 0x63;
      leds[whiteLed].b = 0x47;
      FastLED.show();

     
      // Wait a little bit
      delay(100);

      // Turn our current led back to black for the next loop around
      leds[whiteLed] = CRGB::Black;
   }
}


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Hoi Alexander 

Ik zou de basis kleuren even testen, dus 0xFF0000 (rood), 0x00FF00 (groen) en 0x0000FF (blauw). Er zijn een aantal LED strips in omloop waarbij de kleur volgorde anders is (standaard is RGB, maar er zijn bv strips die met GRB etc werken).

Dus als 0xFF0000 niet rood wordt maar groen, en 0x00FF00 niet groen maar rood, dan weet je dat je die moet omdraaien in de code.
Dus voor elke code(FF0000, 00FF00 en 0000FF) even opschrijven welke kleur je ziet (rood, groen, blauw = RGB) en dan weet je de juiste code - mocht dit het geval zijn voor jouw strip.

Mocht je ontdekken dat de volgorde idd niet RGB maar b.v. GRB, dan moet je deze regel aanpassen (het stukje RGB>):

FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);

naar b.v.

FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);

Een aantal combinaties wordt door FastLED ondersteund, waardoor dan de led[x].r/.g/.b correct werken.


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

hoi hans.

je had gelijk ik moest van RGB - GRB maken. alweer bedankt lol


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Geen probleem en graag gedaan 


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

@hans

https://www.dropbox.com/s/xhp35cn2gwswv2u/20160508_214626.mp4?dl=0

Ik heb de led's afgegoten met hars. Ziet er toppie uit. Nu nog het programmatje. Pfffff 

Ik ben nu aan het zoeken om meerdere led's aan te zetten in verschillende kleuren en ze achter elkaar te laten lopen. Graag hierin wat hulp aub.

De track is nu zover klaar. Ik zou er nog kunststof plaat op kunnen leggen en de zijkanten freesen met een kopiefrees. Ziet er nog gelikter uit denk ik dan.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Ik vind het wel rete gaaf wat je gemaakt hebt hoor! 

Voor wat het programma betreft; de for-loop gaat daarbij niet handig zijn. We moeten dat op een andere manier gaan aanpakken, zeker als je 2 (of meer) autootjes laat rond racen. We moeten handig gebruik gaan maken van "loop()".

In de loop() moeten we:

1. Bijhouden of de race gestart is of gestopt is (globale variabele),

Als de race aan de gang is:

2. Op basis van de potmeter bepalen hoeveel iedere racer vooruit gaat in een cycle,
3. De positie van de racer bepalen, aanpassen, weergeven en opslaan (globale variabele),
4. Start/Finish laten knipperen,
5. Bijhouden bij welke lap we zijn (globale variabele),
6. Als de  race klaar is, winnaar laten knipperen of zo, en de race op "stop" zetten.

Dat gaat een beetje moeite ene experimenteren kosten, maar erg complex is het geloof ik niet.
Alleen zit ik wat krap in de tijd de komende dagen (even op en neer naar Houston voor een consulting job).
Ik zal proberen tussen door wat code in elkaar te zetten - 10 uur in het vliegtuig zou daarbij handig kunnen zijn 


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

Hoi hans.

Doe maar rustig aan en geniet in houston.


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

Hoi hans.

Het is weer even geleden maar zou toch graag verder net dit project willen gaan. 

Je wilde er ook een artiekel over schrijven. Als je alle fotos nodig hebt voor jou artiekel dan laat het me maar weten.

Ik ben nog steeds zo ver als eerst. 1 groene led in de goede richting. Nu zou ik er meerdere willen gaan inprogrammeren. De pot meters wil ik toch weglaten anders zijn die in het zicht. Omdat dit object aan de muur komt te hangen wil ik er zo weinig mogelijk van die knopjes zien. Ik hoop dat je nog zin hebt in dit project. Als dit niet zo is, laat het me dan weten aub.

Groet alexander van loon.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2859
Topic starter  

Hoi Alexander,

sorry voor de late reactie, soms loopt het leven even met je weg he? Al dat gedoe met moeten werken enzo  ...

Wat is de code die je gebruikt op dit moment ...? 


   
BeantwoordenCiteren
(@alexander44)
Eminent Member
Deelgenomen: 9 jaar geleden
Berichten: 29
 

Hoi hans.

Kan ik je nu niet geven. Ook ik zit nu op mijn werk haha. Ik zal hem vanavond hier opzetten voor je.


   
BeantwoordenCiteren
Pagina 2 / 4
Deel: