Or auto-format it in the IDE the post in a [code]
block, like this:
#include "waveforms.h" #include <Keypad.h> #include <SPI.h>
#include <Adafruit_GFX.h> #include <gfxfont.h>
#include <Adafruit_PCD8544.h>
//Set the desired duty cycle in percentage
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 12, 11); double dc, t, a, d;
long d_milli, d_micro, a_milli, a_micro, m, n;
int stage = 0;
int sample_delay1; float sample_delay;
String num1, num2;
int wave1;
String wave_name;
double duty_cycle, k, Z;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'},
{'.', '0', '#', 'D'}
};
byte rowPins[ROWS] = {23, 25, 27, 29}; //connect to the row pinouts of the keypad byte colPins[COLS] = {31,33,35,37}; //connect to the column pinouts of the keypad int i = 0;
int t_sample;
#define DISPLAY_WIDTH 84 #define DISPLAY_HEIGHT 48
#define ARDUINO_PRECISION 1023.0
//Adafruit_PCD8544 display = Adafruit_PCD8544(8,9,10,12,11);
//Analog Pins
int channelAI = A0;
#define DELAY_POTENTIMETER //disabled it I don't have it connected #ifdef DELAY_POTENTIMETER
int delayAI = A1; // delay potentiometer
#endif
float delayVariable = 0; float scale = 0;
int xCounter = 0;
int yPosition = 0;
int readings[DISPLAY_WIDTH + 1]; int counter = 0;
unsigned long drawtime = 0; unsigned long lastdraw = 0; int frames = 0;
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
boolean in_setup = true; void setup()
{
Serial.begin(9600);
analogWriteResolution(12); // set the analog output resolution to 12 bit (4096 levels) analogReadResolution(12);
display.begin(20, 4);
char key = customKeypad.getKey();
display.begin();
display.display();
display.setContrast(40);// you might have a slightly different display so it might not be the optimal value for you
display.clearDisplay();
display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0, 0); display.print("choose wave: "); display.display(); display.setCursor(1, 8); display.print("A=Sine"); display.display(); display.setCursor(1, 16); display.print("B=Triangular"); display.display();
display.setCursor(1, 24); display.print("C=Sawtooth"); display.display(); display.setCursor(1, 32); display.print("D=Square"); display.display();
while ( true) {
char key = customKeypad.getKey(); if (stage == 0)
{
Serial.println("in stage 0"); if (key == 'A' )
{
wave1 = 0; display.clearDisplay(); display.setCursor(0, 0); display.print(" Sine? "); display.display(); wave_name = "Sinusoidal"; Serial.println(wave_name);
}
else if (key == 'B') {
wave1 = 1; display.clearDisplay(); display.setCursor(0, 0); display.print("Triangular?"); display.display(); wave_name = "Triangular"; Serial.println(wave_name);
}
else if (key == 'C') {
wave1 = 2; display.clearDisplay(); display.setCursor(0, 0); display.print("Sawtooth? "); display.display(); wave_name = "Sawtooth"; Serial.println(wave_name);
}
else if (key == 'D') {
wave1 = 3; display.clearDisplay(); display.setCursor(0, 0); display.print("Square? "); display.display(); wave_name = "Square"; Serial.println(wave_name);
}
else if (key == '#') {
stage++; display.clearDisplay(); display.setCursor(20, 8); display.println("Freq="); display.display(); Serial.println("Frequency=");
}
}
else if (stage == 1)
{
if (key != NO_KEY && (key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9' || key == '0'))
{
num1 = num1 + key;
//int numLength = num1.length();
//to adjust one whitespace for operator display.setTextSize(1);
display.setTextColor(BLACK); display.setCursor(48, 9); display.print(num1); display.display();
}
else if (key == '#') {
stage++;
k = num1.toInt();
Serial.print(k); display.setTextSize(1); display.setTextColor(BLACK); display.display(); display.setCursor(10, 1);
int sample_delay_int = 1000000 / (k * 120);
float sample_delay_float = 1000000 / (k * 120);
float difference = sample_delay_float - sample_delay_int; sample_delay1 = sample_delay_int - 6;
if (difference > 0.5)
{
sample_delay1++;
}
display.display(); Serial.println(sample_delay1); display.clearDisplay(); display.print(wave_name); display.setCursor(1, 8); display.println("Freq="); display.print(num1); display.println(" Hz");
break;
}
}
}
//record readings
for (xCounter = 0; xCounter <= DISPLAY_WIDTH; xCounter++) {
yPosition = analogRead(A0); readings[xCounter] = (yPosition * scale); #ifdef DELAY_POTENTIMETER
delay (delayVariable);
#endif
}
display.clearDisplay();
#ifdef DELAY_POTENTIMETER
delayVariable = analogRead(delayAI); display.display();
delayVariable = (delayVariable / 100); #endif
scale = (float)(DISPLAY_HEIGHT - 1) / ARDUINO_PRECISION;
//Draw Voltage Ref Lines
display.drawLine( 10, 0, 10, DISPLAY_HEIGHT - 1, BLACK);
display.drawLine( 5, (DISPLAY_HEIGHT - 1) - (.2 * ARDUINO_PRECISION * scale), 10, (DISPLAY_HEIGHT - 1) - (.2 * ARDUINO_PRECISION * scale), BLACK);
display.drawLine( 0, (DISPLAY_HEIGHT - 1) - (.4 * ARDUINO_PRECISION * scale), 10, (DISPLAY_HEIGHT - 1) - (.4 * ARDUINO_PRECISION * scale), BLACK);
display.drawLine( 5, (DISPLAY_HEIGHT - 1) - (.6 * ARDUINO_PRECISION * scale), 10, (DISPLAY_HEIGHT - 1) - (.6 * ARDUINO_PRECISION * scale), BLACK);
display.drawLine( 0, (DISPLAY_HEIGHT - 1) - (.8 * ARDUINO_PRECISION * scale), 10, (DISPLAY_HEIGHT - 1) - (.8 * ARDUINO_PRECISION * scale), BLACK);
//display.drawLine( 5, (DISPLAY_HEIGHT-1)-(.84 *ARDUINO_PRECISION * scale), 10, (DISPLAY_HEIGHT-1)-(.84 *ARDUINO_PRECISION * scale), BLACK);
//Draw Voltage Ref Numbers
display.setCursor(0, ((DISPLAY_HEIGHT - 1) - (.2 * ARDUINO_PRECISION * scale)) display.print((int)(5.0 * 0.2));
display.setCursor(0, ((DISPLAY_HEIGHT - 1) - (.4 * ARDUINO_PRECISION * scale)) display.print((int)(5.0 * 0.4));
display.setCursor(0, ((DISPLAY_HEIGHT - 1) - (.6 * ARDUINO_PRECISION * scale)) display.print((int)(5.0 * 0.6));
display.setCursor(0, ((DISPLAY_HEIGHT - 1) - (.8 * ARDUINO_PRECISION * scale)) display.print((int)(5.0 * 0.8));
for (xCounter = 0; xCounter <= DISPLAY_WIDTH; xCounter++) {
display.drawPixel(xCounter, (DISPLAY_HEIGHT - 1) - readings[xCounter], BLACK); if (xCounter > 1) {
display.drawLine(xCounter - 1, (DISPLAY_HEIGHT - 1) - readings[xCounter - (DISPLAY_HEIGHT - 1) - readings[xCounter], BLACK);
}
}
//Draw FPS display.setCursor((DISPLAY_WIDTH-1)-11,0); display.print(frames);
//Draw Voltage
display.setCursor(((DISPLAY_WIDTH - 1) / 2), 0); display.print(analogRead(A0) / ARDUINO_PRECISION * 5.0);
display.display();
//Calculate FPS
drawtime = micros(); frames = 1000000 / (drawtime - lastdraw); lastdraw = drawtime;
display.display();
}
void loop() {
analogWrite(DAC1, waveformsTable[wave1][i] );
i++;
if (i == maxSamplesNum) // Reset the counter to repeat the wave
i = 0; else
delayMicroseconds(sample_delay1);
analogWrite(DAC0, waveformsTable[wave1][i] );
i++;
if (i == maxSamplesNum) // Reset the counter to repeat the wave
i = 0; else
delayMicroseconds(sample_delay1);
}