arduino_foer_ungdomar

NeoPixels 1: Blink

Under den här lektion gör vi Blink med NeoPixels!

FLORAbrella, ett paraply med NeoPixels

FLORAbrella, ett paraply med NeoPixels

\pagebreak

NeoPixels 1: uppgift 1, anslutning

Anslut en Arduino till NeoPixels så här:

Stift NeoPixels Stift Arduino
GND GND
5V 5V
DIN 6

\pagebreak

Neopixel 1: uppdrag 1, programmering

Detta är koden för ‘Blink’:

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

void loop()
{
   pixels.setPixelColor(0, pixels.Color(64, 0, 0));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(0, pixels.Color(0, 0, 0));
   pixels.show();
   delay(1000);
}

Solglasögon | Har du glömt här ljusfärger smälta sammans? Se figuret nedåt :————-:|:—————————————-:

Färgcirkel. Här kan du ser att gul är en blandning av röd och grön.

Färg Röd Grön Blå
Röd 255 0 0
Gul 255 255 0
Blå 0 0 255
Dator Smiley
pixels.show() ‘Bästa dator, låt lysdioderna visa sina färger.’

Skriv in koden i Arduino IDE och klicka på “Ladda upp”.

\pagebreak

Neopixel 1: uppgift 2

Blinkar nu

Gå nu

\pagebreak

Neopixel 1: lösning 2

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

void loop()
{
   pixels.setPixelColor(0, pixels.Color(64, 0, 0));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(0, pixels.Color(0, 0, 0));
   pixels.setPixelColor(1, pixels.Color(0, 64, 0));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(1, pixels.Color(0, 0, 0));
}

\pagebreak

Neopixel 1: uppgift 3

Gå nu

\pagebreak

Neopixel 1: lösning 3

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

void loop()
{
   pixels.setPixelColor(0, pixels.Color(64, 0, 0));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(0, pixels.Color(0, 0, 0));
   pixels.setPixelColor(1, pixels.Color(0, 64, 0));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(1, pixels.Color(0, 0, 0));
   pixels.setPixelColor(2, pixels.Color(0, 0, 64));
   pixels.show();
   delay(1000);
   pixels.setPixelColor(2, pixels.Color(0, 0, 0));
}

\pagebreak

Neopixel 1: uppgift 4

Använd nu koden nedan, men gör lysdioderna blåa:

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(64, 0, 0));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
}

\pagebreak

Neopixel 1: lösning 4

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(0, 0, 64));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
}

\pagebreak

Neopixel 1: uppgift 5

Använd nu inte ett blaa_vaerde på 64, utan av which_ledje. Vad ser du?

\pagebreak

Neopixel 1: lösning 5

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(0, 0, which_led));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
}

\pagebreak

Neopixel 1: uppgift 5

Använd nu inte ett roed_vaerde på 0, utan av 64 - which_ledje. Vad ser du?

\pagebreak

Neopixel 1: lösning 5

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(64 - which_led, 0, which_led));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
}

\pagebreak

Neopixel 1: uppgift 6

Istället för att alltid göra ‘which_ledje’ högre, vi kan också göra det med en ny variabel: ‘roed_vaerde’. Skapa en ny variabel, av typen “int”, med namnet “redvalue” och initialvärdet noll. Använd ‘roed_vaerde’ där du bestämmer det röda värdet på en lysdiod. Låt ‘roed_vaerde’ öka med 1 varje gång.

\pagebreak

Neopixel 1: lösning 6

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
int roed_vaerde = 0;

void loop()
{
   pixels.setPixelColor(vilken_led, pixlar.Färg(roed_vaerde, 0, vilken_led));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
   roed_vaerde = roed_vaerde + 1;
}

\pagebreak

Neopixel 1: uppgift 7

Istället för att alltid göra ‘which_ledje’ högre, vi kan också göra det med en ny variabel: ‘blaa_vaerde’. Skapa en ny variabel, av typen “int”, med namnet “bluevalue” och initialvärdet “32”. Använd ‘blaa_vaerde’ där du bestämmer det röda värdet på en lysdiod. Låt ‘blaa_vaerde’ öka med 1 varje gång.

\pagebreak

Neopixel 1: lösning 7

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
int roed_vaerde = 0;
int blaa_vaerde = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(redvalue, 0, bluevalue));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
   roed_vaerde = roed_vaerde + 1;
   blaa_vaerde = blaa_vaerde + 1;
}

\pagebreak

Neopixel 1: uppgift 8

Istället för att göra det “röda värdet” högre och högre, vi kan alltid göra dessa två högre. Men vi vill inte att det “röda värdet” ska överstiga “64”. Använd en “if”-sats: om “roed_vaerde” är större än “64”, det “röda värdet” blir då noll.

\pagebreak

Neopixel 1: lösning 8

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
int roed_vaerde = 0;
int blaa_vaerde = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(redvalue, 0, bluevalue));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
   roed_vaerde = roed_vaerde + 2;
   blaa_vaerde = blaa_vaerde + 1;
   if (roed_vaerde > 64)
   {
     roed_vaerde = 0;
   }
}

\pagebreak

Neopixel 1: uppgift 9

Istället för att göra “blaa_vaerde” högre och högre, vi kan alltid göra dessa tre högre. Men vi vill inte att ‘blaa_vaerde’ överstiger ‘64’. Använd en “if”-sats: om “blaa_vaerde” är större än “64”, att ‘blaa_vaerde’ då blir noll.

\pagebreak

Neopixel 1: lösning 9

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
int roed_vaerde = 0;
int blaa_vaerde = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(redvalue, 0, bluevalue));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
   roed_vaerde = roed_vaerde + 2;
   blaa_vaerde = blaa_vaerde + 3;
   if (roed_vaerde > 64)
   {
     roed_vaerde = 0;
   }
   if (blaa_vaerde > 64)
   {
     blaa_vaerde = 0;
   }
}

\pagebreak

Neopixel 1: uppgift 10

which_ledje blir nu högre och högre. Lägg nu till ett if-sats: om which_led är större eller lika än number_neopixels, att vilken_ledje då blir noll.

\pagebreak

Neopixel 1: lösning 10

#include <Adafruit_NeoPixel.h>

const int stift_neopixels = 6;
const int antal_pixels = 60;

Adafruit_NeoPixel pixlar = Adafruit_NeoPixel(
   antal_pixels,
   stift_neopixels,
   NEO_GRB + NEO_KHZ800
);

void setup()
{
   pixels.begin();
}

int vilken_led = 0;
int roed_vaerde = 0;
int blaa_vaerde = 0;

void loop()
{
   pixels.setPixelColor(which_led, pixels.Color(redvalue, 0, bluevalue));
   pixels.show();
   delay(100);
   vilken_led = vilken_led + 1;
   roed_vaerde = roed_vaerde + 2;
   blaa_vaerde = blaa_vaerde + 3;
   if (roed_vaerde > 64)
   {
     roed_vaerde = 0;
   }
   if (blaa_vaerde > 64)
   {
     blaa_vaerde = 0;
   }
   if (vilket_led >= antal_pixels)
   {
     vilken_led = 0;
   }
}

\pagebreak

Neopixel 1: slutuppgift

Skapa en ny variabel “grönt värde”, som bestämmer det gröna värdet för lysdioderna. Den här får hela tiden fyra till. Om ‘grönt värde’ är över 64, ställ in det på noll.