Hallo,
ich möchte Euch mein letztes kleines Spaß-Projekt vorstellen. Vorlagen für die Box sind im Netz zu finden, zur Not geht da auch eine Pappbox.
Der Servo ist auch unkritisch, sollte aber ein "kleiner" Typ sein. Der Mosfet muss ein Logic Level Typ sein.
Alles anzeigen
useless.jpgUseless Box.sch.pdf
Gruß Udo
ich möchte Euch mein letztes kleines Spaß-Projekt vorstellen. Vorlagen für die Box sind im Netz zu finden, zur Not geht da auch eine Pappbox.
Der Servo ist auch unkritisch, sollte aber ein "kleiner" Typ sein. Der Mosfet muss ein Logic Level Typ sein.
BASCOM-Quellcode: Useless-Box
- '*******************
- '* Udo Lorenz *
- '* Useles-Box *
- '* 13.03.2018 *
- '*******************
- '(DIGISPARK Arduino Attiny85 Bord, beide LEDs vom Bord entfernt.
- Programmiert mit Orginal USB Bootloader PLL auf 16 MHZ.
- Nur 27% Speicher verwendet, also noch genug Platz für eigene Erweiterungen und Effekte!
- ')
- '$sim
- $regfile = "Attiny85.dat" ' specify the used micro
- $crystal = 16000000 ' PLL 16 MHz interner Oszillator
- $hwstack = 80 ' default use 32 for the hardware stack
- $swstack = 80 ' default use 10 for the SW stack
- $framesize = 100 ' default use 40 for the frame space
- Config Portb.4 = Output 'led
- Config Portb.2 = Output 'Servo Signal
- Config Portb.0 = Output 'Servo AN/AUS
- Config Pinb.1 = Input 'Kippschalter Eingang
- Portb.4 = 0 'PIN initialisieren (OFF)
- Portb.2 = 0 'PIN initialisieren (OFF)
- Portb.0 = 0 'PIN initialisieren (OFF)
- Portb.1 = 1 'Internen Pullup EIN
- Config Int0 = Low Level 'Int0 auf Low Level konfigurieren
- Enable Interrupts 'Einschalten der Interrupts
- Enable Int0 'Einschalten Von Interrupt Int0
- Dim I As Word
- Dim K As Word
- Dim Zufall As Byte ' Zufallzahl
- Dim Z As Byte ' LED Blinkzähler
- Dim Z2 As Word ' Warteschleifenzähler
- 'Je nach BOX und Servo Werte anpassen!
- Const Servo_min = 12000 ' Servo-Ruhestellung
- Const Servo_max = 3600 ' Max. Servo-Auslenkung
- Const Servo_rumble = 10000 ' Servobewegung ohne Heben des Deckels
- Const Servo_knock = 8900 ' Servobewegung mit Heben des Deckels
- Const Servo_halb = 6000
- 'Subrutinen
- Declare Sub Aus
- Declare Sub Rumpeln
- Declare Sub Klappern
- Declare Sub Halb
- Declare Sub Halb_aus
- Declare Sub Led
- Declare Sub Aus_halb_aus
- 'Hauptschlleife
- Do
- Disable Int0
- If Pinb.1 = 0 Then 'Prüfen ob Kippschalter ON ist
- Waitms 500 '1 Sek warten
- If Pinb.1 = 0 Then 'Prüfen ob Kippschalter ON ist
- Portb.0 = 1 'Servo VCC über Relais einschalten
- Zufall = Rnd(12) + 1 'Zufallzahl 1-12 Aufruf Call-Nr., Erweiterbar
- 'Call Aufrufe, beliebig Erweiterbar
- If Zufall = 1 Then
- Call Rumpeln
- Call Klappern
- Call Klappern
- Call Halb
- Call Aus
- Call Rumpeln
- End If
- If Zufall = 2 Then
- Call Aus
- Call Klappern
- Call Klappern
- Call Rumpeln
- End If
- If Zufall = 3 Then
- Call Halb_aus
- Call Rumpeln
- Call Led
- End If
- If Zufall = 4 Then
- Call Rumpeln
- Call Rumpeln
- Call Rumpeln
- Call Aus
- Call Halb
- Call Rumpeln
- End If
- If Zufall = 5 Then
- Call Aus
- Call Halb
- End If
- If Zufall = 6 Then
- Call Klappern
- Call Klappern
- Call Aus
- End If
- If Zufall = 7 Then
- Call Aus
- End If
- If Zufall = 8 Then
- Call Aus_halb_aus
- End If
- If Zufall = 9 Then
- Call Halb
- End If
- If Zufall = 10 Then
- Call Aus
- Call Klappern
- End If
- If Zufall = 11 Then
- Call Aus
- Call Led
- End If
- If Zufall = 12 Then
- Call Aus
- Call Rumpeln
- End If
- End If
- 'Warteschleife bis AUS
- For Z2 = 1 To 30
- If Pinb.1 = 1 Then
- Waitms 500
- Else
- Exit For
- End If
- Next
- 'Aus
- If Pinb.1 = 1 Then
- Call Halb
- Call Klappern
- Portb.0 = 0 'Servo Aus
- Enable Int0 'Einschalten Von Interrupt Int0
- Config Powermode = Powerdown 'Controller einschlafen lassen
- End If
- End If
- Loop
- End
- 'Subroutinen
- Sub Aus
- Toggle Portb.4
- For I = Servo_min To Servo_max Step -80
- Pulseout Portb , 2 , I
- Waitms 5
- If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
- I = I - 100 'Sicher gehen, dass der Kippschalter nicht halb-aus ist
- Pulseout Portb , 2 , I 'Sicher gehen, dass der Kippschalter nicht halb-aus ist
- Exit For 'Schleife Verlassen
- End If
- Next
- For K = I To Servo_min Step + 70 'Arm hineinfahren
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- Wait 1
- Toggle Portb.4
- End Sub
- Sub Rumpeln
- Toggle Portb.4
- For I = 1 To 10
- Pulseout Portb , 2 , Servo_rumble
- Waitms 15
- Next
- For I = 1 To 10
- Pulseout Portb , 2 , Servo_min
- Waitms 15
- Next
- Waitms 100
- Toggle Portb.4
- End Sub
- Sub Klappern
- Toggle Portb.4
- For I = 1 To 10
- Pulseout Portb , 2 , Servo_knock
- Waitms 15
- Next
- For I = 1 To 10
- Pulseout Portb , 2 , Servo_min
- Waitms 15
- Next
- Waitms 100
- Toggle Portb.4
- End Sub
- Sub Halb
- Toggle Portb.4
- For I = Servo_min To Servo_halb Step -20
- Pulseout Portb , 2 , I
- Waitms 5
- Next
- Wait 2
- For K = I To Servo_min Step + 30 'Arm hineinfahren
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- Waitms 500
- Toggle Portb.4
- End Sub
- Sub Halb_aus
- Toggle Portb.4
- For I = Servo_min To Servo_halb Step -20
- Pulseout Portb , 2 , I
- Waitms 5
- Next
- Wait 2
- For I = Servo_halb To Servo_max Step -70
- Pulseout Portb , 2 , I
- Waitms 5
- If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
- I = I - 100
- Pulseout Portb , 2 , I
- Exit For 'Schleife Verlassen
- End If
- Next
- For K = I To Servo_min Step + 80 'Arm hineinfahren
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- Wait 1
- Toggle Portb.4
- End Sub
- Sub Aus_halb_aus
- Toggle Portb.4
- For I = Servo_min To Servo_max Step -80
- Pulseout Portb , 2 , I
- Waitms 5
- If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
- I = I - 100
- Pulseout Portb , 2 , I
- Exit For 'Schleife Verlassen
- End If
- Next
- For K = I To Servo_halb Step + 5 'Arm langsam auf halb
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- Wait 3
- If Pinb.1 = 0 Then 'Prüfen ob Kippschalter OFF ist
- For I = Servo_halb To Servo_max Step -80
- Pulseout Portb , 2 , I
- Waitms 5
- If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist
- I = I - 100
- Pulseout Portb , 2 , I
- Exit For 'Schleife Verlassen
- End If
- Next
- For K = I To Servo_min Step + 70 'Arm hineinfahren
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- Else
- For K = I To Servo_min Step + 70 'Arm hineinfahren
- Pulseout Portb , 2 , K
- Waitms 5
- Next
- End If
- Wait 1
- Toggle Portb.4
- End Sub
- Sub Led 'LED Blink
- For Z = 1 To 20
- Toggle Portb.4
- Waitms 100
- Next
- End Sub
- End
Gruß Udo