Beiträge von rediculum
-
-
hab ich das richtig gsehen, dass die controller wired sind?
-
Krass... hast Video von der Beleuchtung?
-
Zitat
Original von stim0r0l
Müsste doch einfacher mit strcat() gehen?jup, hat funktioniert mit string concatination. Danke dir, sieht schon besser aus.
Hier übrigens noch der Code mit der TMRpcm Library, anstatt SSDA. Das Kompilat ist zwar 7kb grösser als bei SSDA, dafür unterstützt es WAV statt RAW Formate, was die SD Karte an Speicherplatz entlastet.
C- /*
- =============================================================================================
- Fairy Tale Phone 1.0
- by ReDiculum (Oct. - Dez. 2013)
- -------------------------------
- X-Mas 2013 Arduino project.
- Using an old Zellweger Modell 70 (anno 1982) telephone with dial wheel.
- The wheel can be spinned to count impulses and then playing one of ten different
- audio fairies stored as 8bit 16.000khz mono WAV files named from 1.wav to 10.wav
- SD Card > Arduino pinout:
- CS (1) -> Pin 4 (Chip select)
- MOSI (2) -> Pin 11
- MISO (7) -> Pin 12
- SCK (5) -> Pin 13
- Ear phone -> Pin 9 (protect with Diode against Pin 3) and GND
- Dial wheel -> Pin 2 and GND
- =============================================================================================
- TMRh20's pcm library for Arduino
- https://github.com/TMRh20/TMRpcm
- */
- #include <SD.h>
- #include <TMRpcm.h>
- #include <SPI.h>
- #define IMPULSE_PIN 2 // Digital Pin 2
- #define PHONE_PIN 3 // Digital Pin 3 (PWM)
- #define SD_CHIPSELECT_PIN 4 // SD
- #define LED_PIN 13 // Digital Pin 13
- #define TIME_WAIT 2000 // Waiting 2sec during dial wheel turns. Sufficient to catch 10 impulses
- int countImpulse = 0;
- unsigned long timeWait = 0;
- TMRpcm music; // Create object "music" from class "TMRpcm"
- /* Sum of running millis and TIME_WAIT.
- Must be long integer if kids are not dialing quickly :)
- */
- unsigned long timeWaitEnd = 0;
- void setup() {
- Serial.begin(57600); // Set console to 57600 baud
- Serial.println("=== FairyTalePhone based on TMRpcm ===");
- pinMode(LED_PIN, OUTPUT); // onboard LED
- music.speakerPin = 9; // Set Pin for SD card audio output
- /* Turn on internal pullup resistor, because we pull the pin to ground.
- When the wheel gives impulse, the contact is opened (no current). That's
- when we have a digitalRead = 1.
- */
- digitalWrite(IMPULSE_PIN, HIGH);
- Serial.println("Ready to dial ...");
- // Play tone and wait here until the dial wheel has sent his first impulse
- tone(PHONE_PIN,420);
- while (digitalRead(IMPULSE_PIN) == 0) {
- delay(1);
- }
- noTone(PHONE_PIN); // Pssht! Here we go!
- Serial.print("Counting impulses ");
- timeWaitEnd = millis() + TIME_WAIT; // Summarize already passed millis since Arduino runs and TIME_WAIT.
- // Count all the dialed impulses until timeWaitEnd has reached
- while (millis() < timeWaitEnd ) {
- if (digitalRead(IMPULSE_PIN) == 1) {
- /* Increment the amount of impulses if the contacts are opened.
- The wheel pulses with an interval of approx 70ms
- */
- countImpulse++;
- Serial.print(".");
- digitalWrite(LED_PIN, HIGH); // Blink LED ...
- tone(PHONE_PIN,1000); // ... and short tone (70ms) of 1khz to fill the gap
- delay(70);
- digitalWrite(LED_PIN,LOW);
- noTone(PHONE_PIN);
- }
- }
- Serial.println(" "); // New line
- /* If the dial wheel has been turned more than once by nervous kids
- and the amount of counted impulses exceeds 10, we just restart Arduino
- */
- if (countImpulse > 10) {
- Serial.print("Count exceeded 10 ("); Serial.print(countImpulse); Serial.println("), restarting");
- hangOff();
- asm volatile (" jmp 0"); // Soft Reset
- } else {
- Serial.print("Preparing fairy tale number "); Serial.println(countImpulse);
- // Initialize SD Card with library SimpleSDAudio
- if (!SD.begin(SD_CHIPSELECT_PIN)) {
- tone(PHONE_PIN,100); delay(250); noTone(PHONE_PIN); delay(400);
- tone(PHONE_PIN,80); delay(600); noTone(PHONE_PIN);
- Serial.println("Error initializing SD Card");
- while(1);
- }
- /* define a char array with an index size of 6 and convert
- integer "countImpulse" to char "track" using utoa() function
- http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html
- */
- char track[6];
- utoa(countImpulse,track,10);
- // Append the suffix .wav to the char array
- strcat(track, ".wav");
- // Play the audio file
- music.play(track);
- Serial.print("Playing..."); Serial.println(track);
- while (music.isPlaying() == 1) {
- true; // play WAV file number and wait until it's finished
- }
- hangOff(); // That's it, we jump into loop() function
- }
- }
- void loop() {
- ;// Nothing to do
- //asm volatile (" jmp 0"); // Soft Reset
- }
- void hangOff(){
- // Hang off tone 5x
- delay(1000);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- }
@OOR, wie siehts mit deiner Beleuchtung aus?
-
Danke :). Jo der Code soll etwas amüsant dokumentiert sein.
hihi, ich hab meine Sketches auf Dropbox gespeichert, so kann ich zu Hause oder im Geschäft weitercoden, wenn ich Bock (und Zeit) habAn C++ coder:
countImpulse ist ein integer und ich muss den in ein char array umwandeln. Zusätzlich muss der string ".PCM" in den array hinzugefügt werden. Wie könnte ich das verschönern? -
Ganz geil! So tägliche Sörgerchen mit Arduino lösen ist einfach der Hammer!
Ich bin mit meinem Märlitelefon etwas weiter gekommen. Da der SD Breakout immer noch nicht gekommen ist, habe ich doch mal als Prototyp einen SD Adapter mit Pins versehen.
Hier ist der komplette Code:
C- /*
- =============================================================================================
- Fairy Tale Phone 1.0
- by ReDiculum (Oct. - Nov. 2013)
- -------------------------------
- X-Mas 2013 Arduino project.
- Using an old Zellweger Modell 70 (anno 1982) telephone with dial wheel.
- The wheel can be spinned to count impulses and then playing one of ten different
- audio fairies stored as 8bit full-rate (62500) mono PCM files named from 1.PCM to 10.PCM
- SD Card > Arduino pinout:
- CS (1) -> Pin 4 (Chip select)
- MOSI (2) -> Pin 11
- MISO (7) -> Pin 12
- SCK (5) -> Pin 13
- Ear phone -> Pin 9 (protect with Diode) and GND
- Dial wheel -> Pin 2 and GND
- =============================================================================================
- SimpleSDAudio library for audio playback from SD card
- http://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio
- */
- #include <SimpleSDAudio.h>
- #define IMPULSE_PIN 2 // Digital Pin 2. Read impulses
- #define PHONE_PIN 3 // Digital Pin 3 (PWM) for phone tone output (protect with Diode)
- #define SD_CHIPSELECT_PIN 4 // Digital Pin 4. SD Card chip select.
- #define LED_PIN 13 // Digital Pin 13
- #define TIME_WAIT 2000 // Waiting 2sec during dial wheel turns. Sufficient to catch 10 impulses
- int countImpulse = 0; // The magic number to "dial" the music track number.
- /* Sum of running millis and TIME_WAIT.
- Must be long integer if kids are not dialing quickly :)
- */
- unsigned long timeWaitEnd = 0;
- void setup() {
- Serial.begin(57600); // Set console to 57600 baud
- Serial.println("=== FairyTalePhone 1.0 ===");
- pinMode(LED_PIN, OUTPUT); // onboard LED
- /* Turn on internal pullup resistor, because we pull the pin to ground.
- When the wheel gives impulse, the contact is opened (no current). That's
- when we have a digitalRead = 1.
- */
- digitalWrite(IMPULSE_PIN, HIGH);
- Serial.println("Ready to dial ...");
- // Play tone and wait here until the dial wheel has sent his first impulse
- tone(PHONE_PIN,420);
- while (digitalRead(IMPULSE_PIN) == 0) {
- delay(1);
- }
- noTone(PHONE_PIN); // Pssht! Here we go!
- Serial.print("Counting impulses ");
- timeWaitEnd = millis() + TIME_WAIT; // Summarize already passed millis since Arduino runs and TIME_WAIT.
- // Count all the dialed impulses until timeWaitEnd has reached
- while (millis() < timeWaitEnd ) {
- if (digitalRead(IMPULSE_PIN) == 1) {
- /* Increment the amount of impulses if the contacts are opened.
- The wheel pulses with an interval of approx 70ms
- */
- countImpulse++;
- Serial.print(".");
- digitalWrite(LED_PIN, HIGH); // Blink LED ...
- tone(PHONE_PIN,1000); // ... and short tone (70ms) of 1khz to fill the gap
- delay(70);
- digitalWrite(LED_PIN,LOW);
- noTone(PHONE_PIN);
- }
- }
- Serial.println(" "); // New line
- /* If the dial wheel has been turned more than once by nervous kids
- and the amount of counted impulses exceeds 10, we just restart Arduino
- */
- if (countImpulse > 10) {
- Serial.print("Count exceeded 10 ("); Serial.print(countImpulse); Serial.println("), restarting");
- hangOff();
- asm volatile (" jmp 0"); // Soft Reset
- } else {
- Serial.print("Preparing fairy tale number "); Serial.println(countImpulse);
- // Initialize SD Card with library SimpleSDAudio
- if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER)) {
- tone(PHONE_PIN,100); delay(250); noTone(PHONE_PIN); delay(400);
- tone(PHONE_PIN,80); delay(600); noTone(PHONE_PIN);
- Serial.println("Error initializing SD Card");
- while(1);
- }
- /* define a char array with an index size of 6 and convert
- integer "countImpulse" to char* "track" using utoa() function
- http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html
- */
- char track[6];
- utoa(countImpulse,track,6);
- // Append the suffix .PCM to the char array
- track[1] = '.'; track[2] = 'P'; track[3] = 'C'; track[4] = 'M'; track[5] = '\0';
- // Set the audio file if it exists and play it
- if (SdPlay.setFile(track)) {
- Serial.print("Playing..."); Serial.println(track);
- SdPlay.play();
- while(!SdPlay.isStopped()){
- ;
- }
- SdPlay.deInit();
- hangOff();
- } else {
- SdPlay.deInit();
- Serial.print("File "); Serial.print(track); Serial.println(" not found");
- tone(PHONE_PIN,80); delay(250); noTone(PHONE_PIN); delay(400);
- tone(PHONE_PIN,120); delay(600); noTone(PHONE_PIN);
- }
- }
- }
- void loop(void) {
- ; // Nothing to do here
- //asm volatile (" jmp 0"); // or Soft Reset?
- }
- void hangOff(){
- // Hang off tone 5x
- delay(1000);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- tone(PHONE_PIN,450); delay(250);
- noTone(PHONE_PIN); delay(250);
- }
Und hier noch Video in Action
-
Zitat
Original von -SouL ReaveR-
Wieso sind soviele scharf auf die 5850? Was meint ihr mit Miner? -
Zitat
Original von Tazzler
Die Minerjo dacht ich auch
-
Zitat
Original von maeund man lernt was dabei
das wichtigste von allem
-
no prob. ich meld mich per PN
-
d.h. man würde HotS für 17€ kriegen?
-
Zitat
Original von ruffy91
Yay! Humble Bundle mit Bitcoin bezahlt die ich aus meinen geminten LTCs getauscht habe.genau so. cool gemacht
-
bin vor ein paar wochen von einem Galaxy S2 auf das Nexus 5 umgestiegen. Bin grundsätzlich gut zufrieden damit (siehe sep. Thread für Nexus 5) und habs vor für eine gute Zeit zu behalten.
Auf dem S2 hatte ich ziemlich lange CyanogenMod drauf. Aufgrund GPS fix problemen bin ich dann auf Slimbeam umgestiegen, war auch nett.
Beim Nexus 5 bleib ich vorübergehen mal auf pure Android. Sehe noch keinen dritigen Grund, ein custom ROM draufzuspielen. -
Jetzt bin ich aber auch auf die Antwort gespannt ...
-
dachte an einen 5-Liber inkl. (Brief B-Post) oder 0.005 BTC
Paypal geht auch
EDIT: Erledigt. Danke Lyunac!
-
Also suchst du Teile um einen QC selber zu bauen oder willst du deinen X4 reparieren?
Ich hab meinen Hubsan X4 V2 mit Zubehör auf banggood.com gekauft.
-
Mein USB Erupter "hängt" seit September auf dem Balkon und ist einfach vor direkter Sonneneinstrahlung und Regen geschützt. Im Moment: Beste Kühlung ever.
Die anderen zwei sind in der Bude im klimatisierten Lab. -
Zitat
Original von mae
Lediglich ein Punkt ist noch offen... Während dem Einschalten, darf der Sensor nicht angeschlossen sein. Oder zumindest nicht leite... Sonst wird das Relais einmal ein und nicht mehr ausgeschaltet
nug Arduino für nen Monat :p
gn8hmmmm. Das müsste man durch eine Verzögerung hinkriegen. Kondensator, Widerstand und Transistor oder so müsste das hinkriegen. Könnte dir jetzt aber das nicht gleich berechnen.
Das Trinket hat leider 1 Pin zu wenig für mein Projekt. Ich brauche 6 Pins:
1-4 für SD (MISO, MOSI,CLK, CS)
5 für Audio out
6 für WählscheibePS: schöner code
-
Stimme Entsafter zu. ASIC Hardware ist auch wieder teurer geworden. Anschaffen für BTC bringt nichts.
Wie gesagt für alle Ubergamer die schon gute GraKas haben, jetzt ist LTC dran! Alle anderen, versucht GraKa Schnäppchen zu ergattern.
Die Difficulty für LTC ist (im Moment) nicht so exponentiell wie die von BTC. Also sofort los legen -
Zitat
Original von mae
Schau im Anhang, es gibt kleine günstige und in fast jedem Haushalt erhältliche SD Breakouts.Jetzt machst du das mit einem Adapter microSD zu SD und du kannst noch immer Daten hin und her schaufeln
Ich hab was ähnliches schon probiert, aber:
a) du musst 3.3V speisen. Break-Outs haben LM7805 onboard.
b) Arduino pro mini hat kein 3.3V out. Nur 5-12V in. Ich müsste ein Nano opfern.
c) die Zuverlässigkeit der Kontakte im Selbstbau ist = 0 da sie nicht gefedert sind. Bei meinem Versuch hat immer wieder 1 Pin keinen Kontakt zur SD gehabt. Dieses Pin-Gebiege ist mir aufn Sack gegangen.Ich warte lieber auf den zuverlässigen Break-Out. Dann hab ich sicher kein Wackel.