Car stereo control using TDA7419 for input select, audio control. Adafruit 96x64 monochrome 0.96" display to show the audio selections four buttons to control selections. Next steps: take input from the car steering wheel controls!

Dependencies:   Adafruit_GFX PinDetect_KL25Z PreampTDA7419 mbed

Revision:
1:f5b8687f67b8
Parent:
0:36eee45709c8
Child:
2:2b0cf4d80668
--- a/main.cpp	Fri Oct 10 04:58:19 2014 +0000
+++ b/main.cpp	Sun Oct 12 04:48:34 2014 +0000
@@ -1,26 +1,46 @@
 #include "mbed.h"
 #include "PinDetect.h"
-#include "ssd1306.h"
-#include "standard_font.h"
-#include "bold_font.h"
+#include "Adafruit_SSD1306.h"
 
 PinDetect  PinUp    ( PTA1  );
 PinDetect  PinLeft  ( PTD4  );
 PinDetect  PinRight ( PTA2  );
 PinDetect  PinDown  ( PTA12 );
 
-DigitalOut led1( LED1 );
-DigitalOut led2( LED2 );
-DigitalOut led3( LED3 );
+class SPI2 : public SPI
+{
+public:
+    SPI2(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
+    {
+        format(8,3);
+        frequency(2000000);
+    };
+};
 
-SSD1306 display (PTA13 /* cs */, PTD5 /* reset */, PTD0 /* dc */, PTD1 /* clock */, PTD2 /* data */); // KL25Z
+SPI2 gSpi(PTD2,NC,PTD1);
+Adafruit_SSD1306 display (gSpi, PTD0, PTD5, PTA13);  // SPI obect, DC, RST, CS
+
+void testfillrect(void) {
+  uint8_t color = 1;
+  for (int16_t i=0; i<display.height()/2; i+=3) {
+    // alternate colors
+    wait(0.05);
+    display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2);
+    display.display();
+    color++;
+  }
+}
 
 void displayWrite(char firstLine[], int value)
 {
-    display.clear();
-    display.printf("%s\r\n", firstLine);
-    display.printf("%d", value);
-    display.update();
+  display.clearDisplay();
+  display.setCursor(0,0);
+  display.setTextSize(2);
+  display.printf("%s\r\n", firstLine);
+  display.setCursor(0,30);
+  display.setTextSize(5);
+  display.printf("  %d\r\n", value);
+  display.display();    
 }
 
 ///////////////////////////
@@ -399,49 +419,28 @@
   updateReg();  // update the TDA7419 registers to reflect any values changed above
 }
 
-
-
-
 void UpPressed( void )
 {
-    led1 = 1;
-    led2 = 0;
-    led3 = 0;
-    displayWrite("Up", 1);
     processButtonPress(0);
 }
 
 void LeftPressed( void )
 {
-    led1 = 0;
-    led2 = 1;
-    led3 = 0;
-    displayWrite("Left", 1);
     processButtonPress(2);
-
 }
 
 void RightPressed( void )
 {
-    led1 = 0;
-    led2 = 0;
-    led3 = 1;
-    displayWrite("Right", 1);
     processButtonPress(3);
 }
 
 void DownPressed( void )
 {
-    led1 = 1;
-    led2 = 0;
-    led3 = 1;
-    displayWrite("Down", 1);
     processButtonPress(1);
 }
 
 int main()
 {
-
     PinUp   .mode( PullUp );
     PinLeft .mode( PullUp );
     PinRight.mode( PullUp );
@@ -452,14 +451,14 @@
     PinRight.attach_asserted( &RightPressed );
     PinDown .attach_asserted( &DownPressed  );
 
-
-    display.initialise();
-    display.clear();
-    display.set_contrast(255); // max contrast
-    display.update();
-    display.set_font(standard_font, 6);
-    display.printf("mbed audio!\r\n");
-    display.update();
+    display.clearDisplay();
+    // draw multiple rectangles
+    testfillrect();
+    wait(0.5);
+    display.display();
+    display.clearDisplay();
+    display.display();
+  
 
     // Sampling does not begin until you set a frequency.
     // The default is 20ms. If you want a different frequency
@@ -471,12 +470,12 @@
     PinRight.setSampleFrequency(); // Defaults to 20ms.
     PinDown .setSampleFrequency(); // Defaults to 20ms.
 
+    processButtonPress(0);
+
     while (1) {
-        wait(5);
+        wait(1);
     }
 
 }
 
-
-
 // EOF
\ No newline at end of file