Wristband v3
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Thu, 29 Mar 2012 12:19:00 +0000 (12:19 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Thu, 29 Mar 2012 12:19:00 +0000 (12:19 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@69 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

Arduino/TactonPlayer/TactonPlayerPreciseNew.cpp [new file with mode: 0644]
Arduino/TactonPlayer/TactonPlayerPreciseNew.h [new file with mode: 0644]
Arduino/TactonPlayer/keywords.txt

diff --git a/Arduino/TactonPlayer/TactonPlayerPreciseNew.cpp b/Arduino/TactonPlayer/TactonPlayerPreciseNew.cpp
new file mode 100644 (file)
index 0000000..cdfa842
--- /dev/null
@@ -0,0 +1,84 @@
+#include "Arduino.h"\r
+#include "TactonPlayerPreciseNew.h"\r
+\r
+TactonPlayerPreciseNew::TactonPlayerPreciseNew(byte nbtactors, byte *pins, byte pwmPin)\r
+:TactonPlayer(nbtactors, pins), _pwmPin(pwmPin)\r
+{
+       pinMode(_pwmPin, OUTPUT);
+       init();\r
+}\r
+\r
+void TactonPlayerPreciseNew::init() const\r
+{\r
+       //init PWM timer\r
+       TIMSK1 = 0;\r
+       TCNT1 = 0;\r
+       TCCR1A = 0; // CTC mode\r
+       TCCR1B = (1 << WGM12) | (1 << CS10);\r
+}\r
+\r
+void TactonPlayerPreciseNew::setFrequency(unsigned int frequency)\r
+{\r
+       TactonPlayer::setFrequency(frequency);\r
+       \r
+       unsigned long ocr = F_CPU / _frequency / 2 - 1;\r
+       byte prescalarbits = (1 << CS10);\r
+       \r
+       if (ocr > 0xffff)\r
+       {\r
+               ocr = F_CPU / _frequency / 64 / 2 - 1;\r
+               prescalarbits = (1 << CS11) | (1 << CS10);\r
+       }\r
+       /*\r
+       Serial.print("_frequency=");\r
+       Serial.print(_frequency, DEC);\r
+       Serial.print(" prescalar=");\r
+       Serial.print(prescalarbits, BIN);\r
+       Serial.print(" ocr=");\r
+       Serial.println(ocr, DEC);*/\r
+\r
+       TCCR1B |= prescalarbits;\r
+       OCR1A = ocr;\r
+/*\r
+       _ccper256cv = F_CPU / 512 / _frequency;\r
+       _currentcvi = 0;*/\r
+\r
+/*     Serial.print("_frequency=");\r
+       Serial.print(_frequency, DEC);\r
+       Serial.print(" _ccper256cv=");\r
+       Serial.println(_ccper256cv, DEC);*/\r
+}\r
+\r
+\r
+void TactonPlayerPreciseNew::beep(byte pattern, unsigned long duration, unsigned int frequency, byte amplitude)\r
+{\r
+       init();\r
+       setFrequency(frequency);\r
+       setAmplitude(amplitude);\r
+       setDuration(duration);\r
+       setPattern(pattern);
+       
+       //set the pattern
+       for (int i = 0 ; i < _nbtactors ; i++)
+       {
+               if (_pattern & (1 << i))\r
+               {
+                       analogWrite(_pins[i], _amplitude);\r
+               }
+       }
+               \r
+       //_active = true;
+
+       //Start the PWM\r
+       TIMSK1 = (1 << OCIE1A);
+       
+       delay(duration);
+       
+       //Stop the PWM
+       TIMSK1 &= ~(1 << OCIE1A);\r
+
+//     TIMSK2 = (1 << OCIE2A) | (1 << TOIE2);\r
+//     TIMSK2 = (1 << TOIE2);\r
+//     sei();\r
+}\r
+\r
diff --git a/Arduino/TactonPlayer/TactonPlayerPreciseNew.h b/Arduino/TactonPlayer/TactonPlayerPreciseNew.h
new file mode 100644 (file)
index 0000000..03bcbac
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef _TACTONPLAYERPRECISENEW_\r
+#define _TACTONPLAYERPRECISENEW_\r
+\r
+#include "Arduino.h"\r
+\r
+#include <TactonPlayer.h>\r
+\r
+class TactonPlayerPreciseNew: public TactonPlayer\r
+{\r
+       public:\r
+               TactonPlayerPreciseNew(byte nbtactors, byte *pins, byte pwmPin);\r
+                               \r
+               //8bits pattern => max 8 tactors, change type if using more\r
+               void beep(byte pattern, unsigned long duration, unsigned int frequency, byte amplitude);\r
+\r
+       private:\r
+               void init() const;              \r
+               void setFrequency(unsigned int frequency);\r
+               //void setDuration(unsigned long duration);\r
+               //void setAmplitude(byte amplitude);\r
+               //void setPattern(byte pattern);\r
+\r
+               byte _pwmPin;\r
+};\r
+\r
+#endif\r
index 585ac33b3a41584ace32dd5e3d310712ca92dca3..0b379ab5db431ddba736cb2c883d8209c4ccd9ba 100644 (file)
@@ -1,5 +1,7 @@
 TactonPlayer   KEYWORD1\r
+TactonManager  KEYWORD1\r
 TactonPlayerPrecise    KEYWORD1\r
+TactonPlayerPreciseNew KEYWORD1\r
 TactonPlayerWithAmplitude      KEYWORD1\r
 beep   KEYWORD2\r
 debug1 KEYWORD2\r