Commutateur 3 positions, leds, arduino Finalised
Damien Monteillard | Sylvain Philip | Creative Commons BY-NC-SA
Damien Monteillard | Sylvain Philip | Creative Commons BY-NC-SA
Grâce au commutateur et à ses positions, afficher la led (-1, 0, 1) correspondante et pouvoir controler sa couleur.
(Position0, Position1, Position2) connecté en digital (20, 21, 22) sur l'arduino mega
Elles sont alimentées 5V en parallèle.
Elles sont Branchées sur 3 entrées digitales (LED_1_PIN 28, LED_2_PIN 29, LED_3_PIN 30).
Utiliser la librairie Adafruit NeoPixel
#include "Adafruit_NeoPixel.h"
///////////////////////////////////////////////////////
//////////////////////// Facade ///////////////////////
///////////////////////////////////////////////////////
// Leds adressables : Mini-LED RGBW NeoPixel ADA4776 //
///////////////////////////////////////////////////////
// Puissance des leds en facade
#define PUISSANCE_led_facade_FACADE 5 // Puissance de la led (0 à 255)
const int LED_1_PIN = 28; // fil bleu
const int LED_2_PIN = 29; // fil gris
const int LED_3_PIN = 30; // fil violet
Adafruit_NeoPixel pixel1(1, LED_1_PIN);
Adafruit_NeoPixel pixel2(1, LED_2_PIN);
Adafruit_NeoPixel pixel3(1, LED_3_PIN);
void init_motor()
{
// Leds facade
pixel1.begin();
pixel1.clear();
pixel1.setBrightness(PUISSANCE_led_facade_FACADE); // ~20% de luminosité
pixel1.setPixelColor(0, pixel1.Color(0, 0, 0));
pixel1.show();
pixel2.begin();
pixel2.clear();
pixel2.setBrightness(PUISSANCE_led_facade_FACADE); // ~20% de luminosité
pixel2.setPixelColor(0, pixel2.Color(255, 122, 0));
pixel2.show();
pixel3.begin();
pixel3.clear();
pixel3.setBrightness(PUISSANCE_led_facade_FACADE); // ~20% de luminosité
pixel3.setPixelColor(0, pixel3.Color(0, 0, 0));
pixel3.show();
}
void startMotor(const int direction, int freq) {
if (!motorState) {
motorState = true;
Serial.print("Démarrage moteur");
(direction == 1) ? stepDrv.setDirection(DRV8825_CLOCK_WISE) : stepDrv.setDirection(DRV8825_COUNTERCLOCK_WISE);
pixel2.setPixelColor(0, pixel1.Color(0, 0, 0));
if (direction == 1) {
pixel1.setPixelColor(0, pixel1.Color(0, 0, 0));
pixel3.setPixelColor(0, pixel1.Color(0, 255, 0));
} else {
pixel3.setPixelColor(0, pixel3.Color(0, 0, 0));
pixel1.setPixelColor(0, pixel1.Color(0, 0, 255));
}
}
pixel1.show();
pixel2.show();
pixel3.show();
}
void stopMotor()
{
if (motorState) {
motorState = false;
pixel1.setPixelColor(0, pixel1.Color(0, 0, 0));
pixel2.setPixelColor(0, pixel1.Color(255, 122, 0));
pixel3.setPixelColor(0, pixel1.Color(0, 0, 0));
}
pixel1.show();
pixel2.show();
pixel3.show();
}
void setup() {
Serial.begin(9600); // Utilise 115200 bauds
pinMode(FORWARD_PIN, INPUT_PULLUP);
pinMode(BACKWARD_PIN, INPUT_PULLUP);
pinMode(OFF_PIN, INPUT_PULLUP);
init_motor();
}
void loop() {
// Contrôle du moteur
if (digitalRead(FORWARD_PIN) == LOW) {
startMotor(1, 0);
} else if (digitalRead(BACKWARD_PIN) == LOW) {
startMotor(-1, 0);
} else {
stopMotor();
}
}