/* Simulateur de soudure à l'arc - 2 postes
auteur: Philippe Blondé
03/02/2025
lien: https://forum.espacetrain.com/index.php?topic=5103.msg52313#new
MODULE SOUDURE A L'ARC ; MAJ 2025-01-26 - Version 1
Chargement à 8 MHz - Pour le chargement ne pas oublier : Programmateur = "Arduino as ISP"
FONCTIONNEMENT
Suite de séries de Flashes dont l'intensité, le nombre et la durée sont aléatoires.
Entre deux séries : extinction d'une durée aléatoire comprise entre 0 et 4 s.
La valeur des bornes mini/maxi des différentes "random" est directement écrite dans le code.
On peut aussi déclarer ces bornes mini/maxi dans "DECLARATION DES VARIABLES"
REPERAGE DES BROCHES D'UN ATtiny45 OU 85 :
Broche 1 : Reset Broche 8 : 5V
Broche 2 : A3 ou 3 Broche 7 : A1 ou 2
Broche 3 : A2 ou 4 Broche 6 : 1 (PWM)
Broche 4 : GND Broche 5 ; 0 (PWM)
*/
// DECLARATION DES VARIABLES
const int Flash_1 = 0; // Broche 5 (PWM)
byte Intensite_Flash_1;
byte Duree_Flash_1;
byte Temps_Extinction_Entre_Deux_Flashes_1;
byte Nombre_De_Flashes_1_A_Faire;
const int Flash_2 = 1; // Broche 6 (PWM)
byte Intensite_Flash_2;
byte Duree_Flash_2;
byte Temps_Extinction_Entre_Deux_Flashes_2;
byte Nombre_De_Flashes_2_A_Faire;
byte Temps_Entre_Deux_Series_De_Flashes;
byte Nombre_De_Boucles;
void setup ()
{
pinMode (Flash_1, OUTPUT);
pinMode (Flash_2, OUTPUT);
}
void loop ()
{
Temps_Entre_Deux_Series_De_Flashes = random (0, 4); // Entre 0 et 4 s
// ANIMATION 1 - POSTE_SOUDURE_1
// PREMIERE SERIE DU POSTE_SOUDURE_1
Nombre_De_Flashes_1_A_Faire = random (10, 20);
Intensite_Flash_1 = random (140, 255);
Duree_Flash_1 = random (10, 80);
Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_1, Intensite_Flash_1);
delay (Duree_Flash_1);
analogWrite (Flash_1, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_1);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
analogWrite (Flash_1, 0);
delay (1000);
// DEUXIEME SERIE DU POSTE_SOUDURE_1
Nombre_De_Flashes_1_A_Faire = random (10, 20);
Intensite_Flash_1 = random (140, 255);
Duree_Flash_1 = random (10, 80);
Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_1, Intensite_Flash_1);
delay (Duree_Flash_1);
analogWrite (Flash_1, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_1);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
analogWrite (Flash_1, 0);
// DELAIS ENTRE ANIMATION 1 ET ANIMATION 2
Nombre_De_Boucles = 0;
do
{
delay (1000);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes);
// ANIMATION 2 - POSTE_SOUDURE_2
// PREMIERE SERIE DU POSTE_SOUDURE_2
Nombre_De_Flashes_2_A_Faire = random (20, 45);
Intensite_Flash_2 = random (140, 255);
Duree_Flash_2 = random (10, 70);
Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_2, Intensite_Flash_2);
delay (Duree_Flash_2);
analogWrite (Flash_2, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_2);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
analogWrite (Flash_2, 0);
delay (1000);
// DEUXIEME SERIE DU POSTE_SOUDURE_2
Nombre_De_Flashes_2_A_Faire = random (20, 45);
Intensite_Flash_2 = random (140, 255);
Duree_Flash_2 = random (10, 70);
Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_2, Intensite_Flash_2);
delay (Duree_Flash_2);
analogWrite (Flash_2, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_2);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
analogWrite (Flash_2, 0);
// DELAIS ENTRE ANIMATION 2 ET ANIMATION 3
Nombre_De_Boucles = 0;
do
{
delay (1000);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes);
// ANIMATION 3 - POSTE_SOUDURE_1
Nombre_De_Flashes_1_A_Faire = random (5, 30);
Intensite_Flash_1 = random (140, 255);
Duree_Flash_1 = random (10, 80);
Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_1, Intensite_Flash_1);
delay (Duree_Flash_1);
analogWrite (Flash_1, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_1);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
analogWrite (Flash_1, 0);
// DELAIS ENTRE ANIMATION 3 ET ANIMATION 4
Nombre_De_Boucles = 0;
do
{
delay (1000);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes);
// ANIMATION 4 - POSTE_SOUDURE_2
Nombre_De_Flashes_2_A_Faire = random (10, 60);
Intensite_Flash_2 = random (140, 255);
Duree_Flash_2 = random (10, 80);
Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);
Nombre_De_Boucles = 0;
do
{
analogWrite (Flash_2, Intensite_Flash_2);
delay (Duree_Flash_2);
analogWrite (Flash_2, 0);
delay (Temps_Extinction_Entre_Deux_Flashes_2);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
analogWrite (Flash_2, 0);
// DELAIS ENTRE ANIMATION 4 ET ANIMATION 1
Nombre_De_Boucles = 0;
do
{
delay (1000);
Nombre_De_Boucles = (Nombre_De_Boucles + 1);
}
while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes);
}
tiny:PB5
tiny:PB3
tiny:PB4
tiny:GND
tiny:PB0
tiny:PB1
tiny:PB2
tiny:VCC
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2