Initialisation dépot

This commit is contained in:
Serge NOEL
2026-08-10 16:39:04 +02:00
commit 33f130d8f3
3 changed files with 71 additions and 0 deletions
+16
View File
@@ -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
+13
View File
@@ -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
+42
View File
@@ -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);
}