Initialisation dépot
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
# Helico
|
||||
|
||||
Ce projet consiste à réaliser une animation ferrovière. Il s'agit de piloter un hélicoptere.
|
||||
|
||||
Basé sur un arduino nano, la partie électronique est constituée de :
|
||||
|
||||
- une entrée 'signal' recevant le signal DCC (PIN 2)
|
||||
- une sortie 'led' qui simule un strobe sur l'hélicoptère
|
||||
- une sortie 'pwm' permettant de lancer le micro-moteur (pales)
|
||||
- une sortie 'servo' qui actionne un servo de +100% à -100% pour la montée et descente.
|
||||
|
||||
|
||||
Principe, sur réception de commande accessoire DCC :
|
||||
- Mise en route 'strobe' ON/OFF
|
||||
- Mise en route 'moteur pale' ON/OFF
|
||||
- Action sur le servo Up et Down ON/OFF/OFF
|
||||
@@ -0,0 +1,13 @@
|
||||
[env:nanoatmega328]
|
||||
platform = atmelavr
|
||||
board = nanoatmega328
|
||||
framework = arduino
|
||||
|
||||
build_flags =
|
||||
-D DCC_SIGNAL_PIN=2
|
||||
-D LED_PIN=3
|
||||
-D PWM_PIN=5
|
||||
-D SERVO_PIN=6
|
||||
|
||||
lib_deps =
|
||||
arduino-libraries/Servo@^1.1.9
|
||||
@@ -0,0 +1,42 @@
|
||||
#include <Arduino.h>
|
||||
#include <Servo.h>
|
||||
|
||||
#define DCC_SIGNAL_PIN 2
|
||||
#define LED_PIN 3
|
||||
#define PWM_PIN 5
|
||||
#define SERVO_PIN 6
|
||||
|
||||
Servo servoMotor;
|
||||
volatile bool dccSignalReceived = false;
|
||||
|
||||
void IRAM_ATTR handleDccSignal() {
|
||||
dccSignalReceived = true;
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(DCC_SIGNAL_PIN, INPUT);
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
pinMode(PWM_PIN, OUTPUT);
|
||||
|
||||
servoMotor.attach(SERVO_PIN);
|
||||
servoMotor.write(90); // position centrale
|
||||
|
||||
attachInterrupt(digitalPinToInterrupt(DCC_SIGNAL_PIN), handleDccSignal, RISING);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (dccSignalReceived) {
|
||||
dccSignalReceived = false;
|
||||
|
||||
// TODO: Décoder la commande DCC et piloter les sorties
|
||||
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
|
||||
analogWrite(PWM_PIN, digitalRead(PWM_PIN) ? 0 : 255);
|
||||
servoMotor.write(0);
|
||||
delay(250);
|
||||
servoMotor.write(180);
|
||||
delay(250);
|
||||
servoMotor.write(90);
|
||||
}
|
||||
|
||||
delay(10);
|
||||
}
|
||||
Reference in New Issue
Block a user