Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*----------------------------------Revision History --------------------------------------------
- Darstellung Licht des schweissbogens
- LED Kaltweiß für maximale Helligkeit LED mit Vorwiederstand 47 Ohm an 5V betreiben
- 1.0 Ein und AUsgänge definiert
- 1.1 Realiesierung über State masch Funktionstest OK
- */
- // Umbenenen der STM Pins
- // EIngänge
- const int TASFU0001 = PB9; // Taster zum Auslösen der Schweissszene
- int TASFU0001State = 0;
- // Ausgänge
- // LED AUSGÄNGE
- const int FULED0001 = PA0; // Lichtschranke einfahrt Ebene 0
- int FULED0001State = 0;
- //Variablen:
- int xZaehlFU001 = 0; // Ganze Zahl um Helligkeit rauf zu zählen für
- int RANDOM0001 = 1; // Zufahlszahl für States in Schweislicht State Maschine
- unsigned RANDOM0002 = 0;
- unsigned RANDOM0003 = 0;
- int RANDOM0004 = 0;
- int RANDOM0005 = 0;
- int RANDOM0006 = 0;
- int RANDOM0007 = 0;
- int RANDOM0008 = 0;
- unsigned ZeitSpeiFU0001 = 0; // Zeitspeicher für State maschine Schweislicht
- enum SCHWEISSTATE01 // State Maschine für Schweisslicht
- {
- GANZHELL, HELL, MITTEL, DUNKEL, AUS, VERTEILER
- };
- SCHWEISSTATE01 akt_state_SCHWEISSTATE01 = VERTEILER;
- SCHWEISSTATE01 next_state_SCHWEISSTATE01 = VERTEILER;
- void setup()
- {
- pinMode(LED_BUILTIN, OUTPUT); //LED auf Arduino auf HIGh
- pinMode (TASFU0001, INPUT);
- pinMode (FULED0001, OUTPUT);
- }
- void loop()
- //-------------------------------- Schweisslicht Begin
- {
- {
- //------------------------------ Begin State Maschine Schweislicht
- if (next_state_SCHWEISSTATE01 != akt_state_SCHWEISSTATE01) // ---------------vergleich ob Status der State Maschine sich geändert hat
- {
- switch (next_state_SCHWEISSTATE01) // ---------------------------------Begin State Maschine für Übergänge (alles wird nur einmal ausgeführt)
- {
- case VERTEILER:
- {
- RANDOM0001 = random(5); // Zufällig geweählte State
- RANDOM0002 = random(150); // Zufällig gewählte Zeit für die leuchtdauer in den einzelnen States
- RANDOM0003 = random(250, 1000); // Zufällig gewählte Zeit für aus
- RANDOM0004 = random(65); // Zufallszahl für Helligkeit im State DUNKEL
- RANDOM0005 = random(65, 125); // Zufallszahl für Helligkeit im State MITTEL
- RANDOM0006 = random(125, 185); // Zufallszahl für Helligkeit im State HELL
- RANDOM0007 = random(185, 255); // Zufallszahl für Helligkeit im State GANZHELL
- RANDOM0008 = random(100, 500); // Zufallszahl Zeit für Helligkeit im State GANZHELL
- break;
- }
- case DUNKEL:
- {
- ZeitSpeiFU0001 = millis();
- break;
- }
- case MITTEL:
- {
- ZeitSpeiFU0001 = millis();
- break;
- }
- case HELL:
- {
- ZeitSpeiFU0001 = millis();
- break;
- }
- case GANZHELL:
- {
- ZeitSpeiFU0001 = millis();
- break;
- }
- case AUS:
- {
- ZeitSpeiFU0001 = millis();
- break;
- }
- }
- akt_state_SCHWEISSTATE01 = next_state_SCHWEISSTATE01; // Zustand next in Zustand akt schreiben
- }
- // ----------------------------------------------------------------- begin State Maschine mit befehlen
- switch (akt_state_SCHWEISSTATE01)
- {
- case VERTEILER:
- {
- if (RANDOM0001 == 0)
- {
- next_state_SCHWEISSTATE01 = GANZHELL;
- }
- if (RANDOM0001 == 1)
- {
- next_state_SCHWEISSTATE01 = HELL;
- }
- if (RANDOM0001 == 2)
- {
- next_state_SCHWEISSTATE01 = MITTEL;
- }
- if (RANDOM0001 == 3)
- {
- next_state_SCHWEISSTATE01 = DUNKEL;
- }
- if (RANDOM0001 == 4)
- {
- next_state_SCHWEISSTATE01 = AUS;
- }
- if (RANDOM0001 == 5)
- {
- next_state_SCHWEISSTATE01 = AUS;
- }
- break;
- }
- case DUNKEL:
- {
- analogWrite(FULED0001, RANDOM0005);
- if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
- {
- next_state_SCHWEISSTATE01 = VERTEILER;
- }
- break;
- }
- case MITTEL:
- {
- analogWrite(FULED0001, RANDOM0004);
- if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
- {
- next_state_SCHWEISSTATE01 = VERTEILER;
- }
- break;
- }
- case HELL:
- {
- analogWrite(FULED0001, RANDOM0006);
- if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
- {
- next_state_SCHWEISSTATE01 = VERTEILER;
- }
- break;
- }
- case GANZHELL:
- {
- analogWrite(FULED0001, RANDOM0007);
- if ( millis() - RANDOM0008 > ZeitSpeiFU0001)
- {
- next_state_SCHWEISSTATE01 = VERTEILER;
- }
- break;
- }
- case AUS:
- {
- analogWrite(FULED0001, 0);
- if ( millis() - RANDOM0003 > ZeitSpeiFU0001)
- {
- next_state_SCHWEISSTATE01 = VERTEILER;
- }
- break;
- }
- }
- // ----------------------------------------------------------------- Ende State Maschine mit befehlen
- //------------------------------ Ende State Maschine Schweislicht
- }
- //-------------------------------- Schweisslicht Ende
- }
Advertisement
Add Comment
Please, Sign In to add comment