5 #include "kernel_id.h"
\r
6 #include "ecrobot_interface.h"
\r
8 /* OSEK declarations */
\r
9 DeclareCounter(SysTimerCnt);
\r
10 DeclareTask(Task1);
\r
12 /* LEJOS OSEK hook to be invoked from an ISR in category 2 */
\r
13 void user_1ms_isr_type2(void)
\r
17 ercd = SignalCounter(SysTimerCnt); /* Increment OSEK Alarm Counter */
\r
24 /* ===============================================================
\r
25 * User Tasks go here
\r
29 Sound 1 2 3 4 5 6 7 8 9
\r
30 B 62 123 247 494 988 1976 3951 7902
\r
31 A# 58 117 233 466 932 1865 3729 7458
\r
32 A 55 110 220 440 880 1760 3520 7040 14080
\r
33 G# 52 104 208 415 831 1661 3322 6644 13288
\r
34 G 49 98 196 392 784 1568 3136 6272 12544
\r
35 F# 46 92 185 370 740 1480 2960 5920 11840
\r
36 F 44 87 175 349 698 1397 2794 5588 11176
\r
37 E 41 82 165 330 659 1319 2637 5274 10548
\r
38 D# 39 78 156 311 622 1245 2489 4978 9956
\r
39 D 37 73 147 294 587 1175 2349 4699 9398
\r
40 C# 35 69 139 277 554 1109 2217 4435 8870
\r
41 C 33 65 131 262 523 1047 2093 4186 8372
\r
42 Note: Frequency is audible from about 31 to 2100 Hertz.
\r
44 #define FREQ_MAX 2093 /* C,7 */
\r
45 #define FREQ_MIN 31 /* B,0 */
\r
46 #define ASCEND 1.059463094F /* 2^(1/12) */
\r
47 #define DESCEND 0.943874313F /* 2^(-1/12) */
\r
49 double freq = FREQ_MIN;
\r
50 double gain = ASCEND;
\r
52 /* Task1 executed every 10ms */
\r
55 U8 TouchSensorStatus;
\r
56 static U8 TouchSensorStatus_old = 0;
\r
59 // TouchSensorStatus = ecrobot_get_touch_sensor(NXT_PORT_S4);
\r
60 // TouchSensorStatus = ecrobot_is_ENTER_button_pressed();
\r
61 TouchSensorStatus = ecrobot_is_RUN_button_pressed();
\r
62 if (TouchSensorStatus == 1 && TouchSensorStatus_old == 0)
\r
64 U32_freq = (U32)(freq + 0.5); /* rounding */
\r
65 sound_freq(U32_freq, 400);
\r
68 display_goto_xy(0, 0);
\r
69 display_string("Freq: ");
\r
70 display_unsigned(U32_freq, 0);
\r
73 if (freq >= FREQ_MAX) gain = DESCEND;
\r
74 else if (freq <= FREQ_MIN) gain = ASCEND;
\r
77 TouchSensorStatus_old = TouchSensorStatus;
\r