Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char intext[11]; // max 10 chars + null
- int anabuf[801]; // analog buffer
- int anatest; // analog test values
- int siz = 0; // size of input string
- char v;
- int j = 0;
- extern int __heap_start;
- int freeRam () {
- // call with: Serial.println(freeRam());
- extern int __heap_start, *__brkval;
- int v;
- return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
- }
- void setup(){
- Serial.begin(500000); // Serial port 500000 baud
- Serial.setTimeout(100); // Timeout 100ms
- pinMode(3, OUTPUT);
- // pin 3 modes 0x1-0x7 =~ 31250, 3906, 976, 488, 244, 122, 30.5
- TCCR2B = (TCCR2B & 0xF8) | 0x05; // 244Hz
- analogWrite(3,127);
- // ADC conv in 13 ticks , prescale: 4:1MHz 5:500kHz 6:250kHz 7:125kHz
- ADCSRA = (ADCSRA & 0xF8) | 0x04; // ADC prescale
- }
- void loop(){
- siz = Serial.readBytesUntil('\n',intext,10); // get input string
- if (siz == 0) return; // if timeout, loop again
- if (intext[0] == 'a') {
- v = (intext[1] - '0');
- ADCSRA = (ADCSRA & 0xF8) | (v & 0x07);
- Serial.print((int) v);
- }
- else if (intext[0] == 's') {
- v = (intext[1] - '0');
- TCCR2B = (TCCR2B & 0xF8) | ( v & 0x07);
- Serial.print((int) v);
- }
- else if (intext[0] == 'r') {
- Serial.println(freeRam());
- }
- else if (intext[0] == 'w') {
- for (j=0; j<800; j++) {
- anatest = analogRead(A3);
- if (anatest < 200) break;
- }
- for (j=0; j<800; j++) {
- anatest = analogRead(A3);
- if (anatest > 250) break;
- }
- for (j=0; j<800; j++) {
- anabuf[j] = analogRead(A3);
- }
- for (j=0; j<800; j++) {
- Serial.print(anabuf[j],DEC);
- Serial.print(',');
- }
- }
- Serial.print('\n');
- }
Advertisement
Add Comment
Please, Sign In to add comment