CapTouchTones.ino
1 // SPDX-FileCopyrightText: 2020 Carter Nelson for Adafruit Industries 2 // 3 // SPDX-License-Identifier: MIT 4 5 //////////////////////////////////////////////////////////////////////////// 6 // Circuit Playground Capacitive Touch Tones 7 // 8 // Play a tone for each touch pad. 9 // Using 4th octave note frequencies, to nearest 1Hz. 10 // https://www.seventhstring.com/resources/notefrequencies.html 11 // 12 // Author: Carter Nelson 13 // MIT License (https://opensource.org/licenses/MIT) 14 15 #include <Adafruit_CircuitPlayground.h> 16 17 #define CAP_THRESHOLD 50 18 19 uint8_t pads[] = {3, 2, 0, 1, 12, 6, 9, 10}; 20 uint8_t numberOfPads = sizeof(pads)/sizeof(uint8_t); 21 22 //////////////////////////////////////////////////////////////////////////// 23 void takeAction(uint8_t pad) { 24 Serial.print("PAD "); Serial.print(pad); Serial.print(" playing note: "); 25 switch (pad) { 26 case 3: 27 Serial.println("C"); 28 CircuitPlayground.playTone(262, 100, false); 29 break; 30 case 2: 31 Serial.println("D"); 32 CircuitPlayground.playTone(294, 100, false); 33 break; 34 case 0: 35 Serial.println("E"); 36 CircuitPlayground.playTone(330, 100, false); 37 break; 38 case 1: 39 Serial.println("F"); 40 CircuitPlayground.playTone(349, 100, false); 41 break; 42 case 12: 43 Serial.println("G"); 44 CircuitPlayground.playTone(392, 100, false); 45 break; 46 case 6: 47 Serial.println("A"); 48 CircuitPlayground.playTone(440, 100, false); 49 break; 50 case 9: 51 Serial.println("B"); 52 CircuitPlayground.playTone(494, 100, false); 53 break; 54 case 10: 55 Serial.println("C"); 56 CircuitPlayground.playTone(523, 100, false); 57 break; 58 default: 59 Serial.println("THIS SHOULD NEVER HAPPEN."); 60 } 61 } 62 63 //////////////////////////////////////////////////////////////////////////// 64 boolean capButton(uint8_t pad) { 65 // Check if capacitive touch exceeds threshold. 66 if (CircuitPlayground.readCap(pad) > CAP_THRESHOLD) { 67 return true; 68 } else { 69 return false; 70 } 71 } 72 73 //////////////////////////////////////////////////////////////////////////// 74 void setup() { 75 // Initialize serial. 76 Serial.begin(9600); 77 78 // Initialize Circuit Playground library. 79 CircuitPlayground.begin(); 80 81 } 82 83 //////////////////////////////////////////////////////////////////////////// 84 void loop() { 85 // Loop over every pad. 86 for (int i=0; i<numberOfPads; i++) { 87 88 // Check if pad is touched. 89 if (capButton(pads[i])) { 90 91 // Do something. 92 takeAction(pads[i]); 93 } 94 } 95 }