User Tools

Site Tools


lts-projekt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lts-projekt [2026/06/02 05:10] – created daddysunlts-projekt [2026/06/02 09:54] (current) daddysun
Line 1: Line 1:
-Download der Dateien des LTS-Projekts MINT bei Brueckmann Elektronik:+Download der Dateien zum LTS-Projekts MINT bei Brückmann Elektronik: 
 + 
 +{{FileSharing}} 
 + 
 +<code> 
 +#include <Wire.h> 
 +#include <MCP23017.h> 
 + 
 +#define BUTTON1 4 
 +#define BUTTON2 5 
 +#define BUTTON3 6 
 +#define BUZZER 2 
 +#define MAX_LEDS 24 
 +#define SPEED 50 
 +#define RAND_MIN 3 
 +#define RAND_MAX 10 
 + 
 +MCP23017 controller1 = MCP23017(0x20); 
 +MCP23017 controller2 = MCP23017(0x21); 
 +MCP23017 controller3 = MCP23017(0x22); 
 + 
 +void setPinAll(byte state) { 
 +  if (state == 0) { 
 +    controller1.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 +    controller2.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 +    controller3.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 +  } else if (state == 1) { 
 +    controller1.writeRegister(MCP23017Register::GPIO_A, 0xFF); 
 +    controller2.writeRegister(MCP23017Register::GPIO_A, 0xFF); 
 +    controller3.writeRegister(MCP23017Register::GPIO_A, 0xFF); 
 +  } 
 +
 + 
 +void setPinState(int led, byte state) { 
 +  if (led > MAX_LEDS) { 
 +    Serial.println("WARN: LED " + String(led) + "(max. " + String(MAX_LEDS) + ") overflow. Set to " + String(led - MAX_LEDS)); 
 +    led = led - MAX_LEDS; 
 +  } 
 +  switch (led) { 
 +    case 1: 
 +      controller1.digitalWrite(0, state); 
 +      break; 
 +    case 2: 
 +      controller1.digitalWrite(1, state); 
 +      break; 
 +    case 3: 
 +      controller1.digitalWrite(2, state); 
 +      break; 
 +    case 4: 
 +      controller1.digitalWrite(3, state); 
 +      break; 
 +    case 5: 
 +      controller1.digitalWrite(4, state); 
 +      break; 
 +    case 6: 
 +      controller1.digitalWrite(5, state); 
 +      break; 
 +    case 7: 
 +      controller1.digitalWrite(6, state); 
 +      break; 
 +    case 8: 
 +      controller1.digitalWrite(7, state); 
 +      break; 
 +    case 9: 
 +      controller2.digitalWrite(0, state); 
 +      break; 
 +    case 10: 
 +      controller2.digitalWrite(1, state); 
 +      break; 
 +    case 11: 
 +      controller2.digitalWrite(2, state); 
 +      break; 
 +    case 12: 
 +      controller2.digitalWrite(3, state); 
 +      break; 
 +    case 13: 
 +      controller2.digitalWrite(4, state); 
 +      break; 
 +    case 14: 
 +      controller2.digitalWrite(5, state); 
 +      break; 
 +    case 15: 
 +      controller2.digitalWrite(6, state); 
 +      break; 
 +    case 16: 
 +      controller2.digitalWrite(7, state); 
 +      break; 
 +    case 17: 
 +      controller3.digitalWrite(0, state); 
 +      break; 
 +    case 18: 
 +      controller3.digitalWrite(1, state); 
 +      break; 
 +    case 19: 
 +      controller3.digitalWrite(2, state); 
 +      break; 
 +    case 20: 
 +      controller3.digitalWrite(3, state); 
 +      break; 
 +    case 21: 
 +      controller3.digitalWrite(4, state); 
 +      break; 
 +    case 22: 
 +      controller3.digitalWrite(5, state); 
 +      break; 
 +    case 23: 
 +      controller3.digitalWrite(6, state); 
 +      break; 
 +    case 24: 
 +      controller3.digitalWrite(7, state); 
 +      break; 
 +  } 
 +
 + 
 +void runSample(byte sample) { 
 +  switch (sample) { 
 +    case 1: 
 +      for (int i = 1; i <= MAX_LEDS; i++) { 
 +        setPinState(i, 1); 
 +        delay(SPEED); 
 +      } 
 +      for (int i = 1; i <= MAX_LEDS; i++) { 
 +        setPinState(i, 0); 
 +        delay(SPEED); 
 +      } 
 +      break; 
 +    case 2: 
 +      for (int i = 1; i <= MAX_LEDS; i++) { 
 +        setPinState(i, 1); 
 +        delay(SPEED); 
 +        setPinState(i, 0); 
 +      } 
 +      break; 
 +    case 3: 
 +      for (int i = 1; i <= MAX_LEDS; i++) { 
 +        setPinState(i, 1); 
 +        if (i > 12) { 
 +          setPinState(i - 12, 1); 
 +          delay(SPEED); 
 +          setPinState(i - 12, 0); 
 +        } else if (i < 12) { 
 +          setPinState(i + 12, 1); 
 +          delay(SPEED); 
 +          setPinState(i + 12, 0); 
 +        } 
 +        delay(SPEED); 
 +        setPinState(i, 0); 
 +      } 
 +      break; 
 +  } 
 +
 + 
 +void setup() { 
 +  Wire.begin(); 
 +  Serial.begin(19200); 
 +  Serial.println("Version 1.0\nProgram: Roulette"); 
 +  Serial.println("Init: Set random seed: " + String(analogRead(0))); 
 +  randomSeed(analogRead(0)); 
 + 
 +  Serial.println("Init: Controller 1"); 
 +  controller1.init(); 
 +  controller1.portMode(MCP23017Port::A, 0); 
 +  controller1.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 + 
 +  Serial.println("Init: Controller 2"); 
 +  controller2.init(); 
 +  controller2.portMode(MCP23017Port::A, 0); 
 +  controller2.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 + 
 +  Serial.println("Init: Controller 3"); 
 +  controller3.init(); 
 +  controller3.portMode(MCP23017Port::A, 0); 
 +  controller3.writeRegister(MCP23017Register::GPIO_A, 0x00); 
 +  delay(100); 
 +
 + 
 +void loop() { 
 +  // Test Sample Mode 
 +  if (digitalRead(BUTTON1) == HIGH && digitalRead(BUTTON2) == LOW && digitalRead(BUTTON3) == HIGH) { 
 +    Serial.println("MODE: TEST"); 
 +    tone(BUZZER, 200); 
 +    setPinAll(1); 
 +    delay(150); 
 +    noTone(BUZZER); 
 + 
 +    tone(BUZZER, 300); 
 +    delay(150); 
 +    noTone(BUZZER); 
 +    setPinAll(0); 
 + 
 +    while (true) { 
 +      // BUTTON 1 
 +      if (digitalRead(BUTTON1) == HIGH && digitalRead(BUTTON2) == LOW && digitalRead(BUTTON3) == LOW) { 
 +        tone(BUZZER, 400); 
 +        runSample(1); 
 +        noTone(BUZZER); 
 +        return; 
 +      } 
 +      // BUTTON 2 
 +      else if (digitalRead(BUTTON1) == LOW && digitalRead(BUTTON2) == HIGH && digitalRead(BUTTON3) == LOW) { 
 +        tone(BUZZER, 800); 
 +        runSample(2); 
 +        noTone(BUZZER); 
 +        return; 
 +      } 
 +      // BUTTON 3 
 +      else if (digitalRead(BUTTON1) == LOW && digitalRead(BUTTON2) == LOW && digitalRead(BUTTON3) == HIGH) { 
 +        tone(BUZZER, 1200); 
 +        runSample(3); 
 +        noTone(BUZZER); 
 +        return; 
 +      } 
 +      delay(100); 
 +    } 
 +  } 
 +  //Game Mode 
 +  else if (digitalRead(BUTTON1) == HIGH && digitalRead(BUTTON2) == LOW && digitalRead(BUTTON3) == LOW) { 
 +    int randomOffset = 0; 
 +    Serial.println("MODE: GAME"); 
 +    tone(BUZZER, 300); 
 +    setPinAll(1); 
 +    delay(750); 
 +    setPinAll(0); 
 +    noTone(BUZZER); 
 +    delay(100); 
 + 
 +    // Game Basis auf Sample 2 
 +    while (true) { 
 +      for (int i = 1; i <= MAX_LEDS; i++) { 
 +        setPinState(i, 1); 
 +        // BUTTON 2 To Stop 
 +        if (digitalRead(BUTTON1) == LOW && digitalRead(BUTTON2) == HIGH && digitalRead(BUTTON3) == LOW) { 
 +          randomOffset = random(RAND_MIN, RAND_MAX); 
 +        } 
 +        delay(SPEED); 
 +        setPinState(i, 0); 
 +        if (randomOffset != 0) { 
 +          Serial.println(randomOffset); 
 +          for (int a = 0; a <= randomOffset; a++) 
 +          { 
 +            setPinState(i + a, 1); 
 +            delay(SPEED * 10); 
 +            setPinState(i + a, 0); 
 +          } 
 +          setPinState(i + randomOffset, 1); 
 +          tone(BUZZER, 250); 
 +          delay(1000); 
 +          noTone(BUZZER); 
 +          setPinState(i + randomOffset, 0); 
 +          return; 
 +        } 
 +      } 
 +    } 
 +  } 
 +  delay(100); 
 +
 + 
 +</code>
lts-projekt.1780369824.txt.gz · Last modified: by daddysun