Useless-Box

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Useless-Box

      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.

      BASCOM-Quellcode: Useless-Box

      1. '*******************
      2. '* Udo Lorenz *
      3. '* Useles-Box *
      4. '* 13.03.2018 *
      5. '*******************
      6. '(DIGISPARK Arduino Attiny85 Bord, beide LEDs vom Bord entfernt.
      7. Programmiert mit Orginal USB Bootloader PLL auf 16 MHZ.
      8. Nur 27% Speicher verwendet, also noch genug Platz für eigene Erweiterungen und Effekte!
      9. ')
      10. '$sim
      11. $regfile = "Attiny85.dat" ' specify the used micro
      12. $crystal = 16000000 ' PLL 16 MHz interner Oszillator
      13. $hwstack = 80 ' default use 32 for the hardware stack
      14. $swstack = 80 ' default use 10 for the SW stack
      15. $framesize = 100 ' default use 40 for the frame space
      16. Config Portb.4 = Output 'led
      17. Config Portb.2 = Output 'Servo Signal
      18. Config Portb.0 = Output 'Servo AN/AUS
      19. Config Pinb.1 = Input 'Kippschalter Eingang
      20. Portb.4 = 0 'PIN initialisieren (OFF)
      21. Portb.2 = 0 'PIN initialisieren (OFF)
      22. Portb.0 = 0 'PIN initialisieren (OFF)
      23. Portb.1 = 1 'Internen Pullup EIN
      24. Config Int0 = Low Level 'Int0 auf Low Level konfigurieren
      25. Enable Interrupts 'Einschalten der Interrupts
      26. Enable Int0 'Einschalten Von Interrupt Int0
      27. Dim I As Word
      28. Dim K As Word
      29. Dim Zufall As Byte ' Zufallzahl
      30. Dim Z As Byte ' LED Blinkzähler
      31. Dim Z2 As Word ' Warteschleifenzähler
      32. 'Je nach BOX und Servo Werte anpassen!
      33. Const Servo_min = 12000 ' Servo-Ruhestellung
      34. Const Servo_max = 3600 ' Max. Servo-Auslenkung
      35. Const Servo_rumble = 10000 ' Servobewegung ohne Heben des Deckels
      36. Const Servo_knock = 8900 ' Servobewegung mit Heben des Deckels
      37. Const Servo_halb = 6000
      38. 'Subrutinen
      39. Declare Sub Aus
      40. Declare Sub Rumpeln
      41. Declare Sub Klappern
      42. Declare Sub Halb
      43. Declare Sub Halb_aus
      44. Declare Sub Led
      45. Declare Sub Aus_halb_aus
      46. 'Hauptschlleife
      47. Do
      48. Disable Int0
      49. If Pinb.1 = 0 Then 'Prüfen ob Kippschalter ON ist
      50. Waitms 500 '1 Sek warten
      51. If Pinb.1 = 0 Then 'Prüfen ob Kippschalter ON ist
      52. Portb.0 = 1 'Servo VCC über Relais einschalten
      53. Zufall = Rnd(12) + 1 'Zufallzahl 1-12 Aufruf Call-Nr., Erweiterbar
      54. 'Call Aufrufe, beliebig Erweiterbar
      55. If Zufall = 1 Then
      56. Call Rumpeln
      57. Call Klappern
      58. Call Klappern
      59. Call Halb
      60. Call Aus
      61. Call Rumpeln
      62. End If
      63. If Zufall = 2 Then
      64. Call Aus
      65. Call Klappern
      66. Call Klappern
      67. Call Rumpeln
      68. End If
      69. If Zufall = 3 Then
      70. Call Halb_aus
      71. Call Rumpeln
      72. Call Led
      73. End If
      74. If Zufall = 4 Then
      75. Call Rumpeln
      76. Call Rumpeln
      77. Call Rumpeln
      78. Call Aus
      79. Call Halb
      80. Call Rumpeln
      81. End If
      82. If Zufall = 5 Then
      83. Call Aus
      84. Call Halb
      85. End If
      86. If Zufall = 6 Then
      87. Call Klappern
      88. Call Klappern
      89. Call Aus
      90. End If
      91. If Zufall = 7 Then
      92. Call Aus
      93. End If
      94. If Zufall = 8 Then
      95. Call Aus_halb_aus
      96. End If
      97. If Zufall = 9 Then
      98. Call Halb
      99. End If
      100. If Zufall = 10 Then
      101. Call Aus
      102. Call Klappern
      103. End If
      104. If Zufall = 11 Then
      105. Call Aus
      106. Call Led
      107. End If
      108. If Zufall = 12 Then
      109. Call Aus
      110. Call Rumpeln
      111. End If
      112. End If
      113. 'Warteschleife bis AUS
      114. For Z2 = 1 To 30
      115. If Pinb.1 = 1 Then
      116. Waitms 500
      117. Else
      118. Exit For
      119. End If
      120. Next
      121. 'Aus
      122. If Pinb.1 = 1 Then
      123. Call Halb
      124. Call Klappern
      125. Portb.0 = 0 'Servo Aus
      126. Enable Int0 'Einschalten Von Interrupt Int0
      127. Config Powermode = Powerdown 'Controller einschlafen lassen
      128. End If
      129. End If
      130. Loop
      131. End
      132. 'Subroutinen
      133. Sub Aus
      134. Toggle Portb.4
      135. For I = Servo_min To Servo_max Step -80
      136. Pulseout Portb , 2 , I
      137. Waitms 5
      138. If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
      139. I = I - 100 'Sicher gehen, dass der Kippschalter nicht halb-aus ist
      140. Pulseout Portb , 2 , I 'Sicher gehen, dass der Kippschalter nicht halb-aus ist
      141. Exit For 'Schleife Verlassen
      142. End If
      143. Next
      144. For K = I To Servo_min Step + 70 'Arm hineinfahren
      145. Pulseout Portb , 2 , K
      146. Waitms 5
      147. Next
      148. Wait 1
      149. Toggle Portb.4
      150. End Sub
      151. Sub Rumpeln
      152. Toggle Portb.4
      153. For I = 1 To 10
      154. Pulseout Portb , 2 , Servo_rumble
      155. Waitms 15
      156. Next
      157. For I = 1 To 10
      158. Pulseout Portb , 2 , Servo_min
      159. Waitms 15
      160. Next
      161. Waitms 100
      162. Toggle Portb.4
      163. End Sub
      164. Sub Klappern
      165. Toggle Portb.4
      166. For I = 1 To 10
      167. Pulseout Portb , 2 , Servo_knock
      168. Waitms 15
      169. Next
      170. For I = 1 To 10
      171. Pulseout Portb , 2 , Servo_min
      172. Waitms 15
      173. Next
      174. Waitms 100
      175. Toggle Portb.4
      176. End Sub
      177. Sub Halb
      178. Toggle Portb.4
      179. For I = Servo_min To Servo_halb Step -20
      180. Pulseout Portb , 2 , I
      181. Waitms 5
      182. Next
      183. Wait 2
      184. For K = I To Servo_min Step + 30 'Arm hineinfahren
      185. Pulseout Portb , 2 , K
      186. Waitms 5
      187. Next
      188. Waitms 500
      189. Toggle Portb.4
      190. End Sub
      191. Sub Halb_aus
      192. Toggle Portb.4
      193. For I = Servo_min To Servo_halb Step -20
      194. Pulseout Portb , 2 , I
      195. Waitms 5
      196. Next
      197. Wait 2
      198. For I = Servo_halb To Servo_max Step -70
      199. Pulseout Portb , 2 , I
      200. Waitms 5
      201. If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
      202. I = I - 100
      203. Pulseout Portb , 2 , I
      204. Exit For 'Schleife Verlassen
      205. End If
      206. Next
      207. For K = I To Servo_min Step + 80 'Arm hineinfahren
      208. Pulseout Portb , 2 , K
      209. Waitms 5
      210. Next
      211. Wait 1
      212. Toggle Portb.4
      213. End Sub
      214. Sub Aus_halb_aus
      215. Toggle Portb.4
      216. For I = Servo_min To Servo_max Step -80
      217. Pulseout Portb , 2 , I
      218. Waitms 5
      219. If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist und
      220. I = I - 100
      221. Pulseout Portb , 2 , I
      222. Exit For 'Schleife Verlassen
      223. End If
      224. Next
      225. For K = I To Servo_halb Step + 5 'Arm langsam auf halb
      226. Pulseout Portb , 2 , K
      227. Waitms 5
      228. Next
      229. Wait 3
      230. If Pinb.1 = 0 Then 'Prüfen ob Kippschalter OFF ist
      231. For I = Servo_halb To Servo_max Step -80
      232. Pulseout Portb , 2 , I
      233. Waitms 5
      234. If Pinb.1 = 1 Then 'Prüfen ob Kippschalter OFF ist
      235. I = I - 100
      236. Pulseout Portb , 2 , I
      237. Exit For 'Schleife Verlassen
      238. End If
      239. Next
      240. For K = I To Servo_min Step + 70 'Arm hineinfahren
      241. Pulseout Portb , 2 , K
      242. Waitms 5
      243. Next
      244. Else
      245. For K = I To Servo_min Step + 70 'Arm hineinfahren
      246. Pulseout Portb , 2 , K
      247. Waitms 5
      248. Next
      249. End If
      250. Wait 1
      251. Toggle Portb.4
      252. End Sub
      253. Sub Led 'LED Blink
      254. For Z = 1 To 20
      255. Toggle Portb.4
      256. Waitms 100
      257. Next
      258. End Sub
      259. End
      Alles anzeigen
      useless.jpgUseless Box.sch.pdf
      Gruß Udo
    • Hallo Udo,
      danke für´s Posten. Die Teile fand ich gut, hab ich aber aus den Augen verloren. Sollte ich mal für die Schule bauen. Ich wette, ich habe die ganze Doppelstunde nicht´s zu tun und intensiv beschäftigte (schaltende) Schüler :D . Wäre ja ein praktisches Projekt zur Servoansteuerung.
      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.