#include #include //#include //#include #define pi 3.14 #define brakelight 8 #define diameter .66 #define numberofreadings 6 #define cutoff 3 #define velocitycutoff 1.2 // in m/s #define displaychangeafter 5000 #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); const int chipSelect= 9; int n=0; int count=0; double instant=0; double previnstant=0; double prevprevinstant=0; int wheelcount=0; float velocity=0; float accleration=0; float distance=0; int temp; bool unit1=0; bool unit2=1; bool unit3=0; int unitmillis1=0; int unitmillis2=0; int unitmillis3=0; void setup() { pinMode(2,INPUT_PULLUP); pinMode(brakelight,OUTPUT); attachInterrupt(digitalPinToInterrupt(2),cross,FALLING); display.begin(SSD1306_SWITCHCAPVCC , 0x3C); display.setTextColor(WHITE); display.setTextSize(3); /* if (!SD.begin(chipSelect)) { display.setTextSize(1); display.setCursor(0,23); display.print("No SD Card"); } display.display(); display.setTextSize(3); File dataFile = SD.open("datalog.txt",FILE_WRITE); if(dataFile) { dataFile.println("RESTART,RESTART,RESTART,RESTART"); dataFile.println("TIME,Accleration,Speed,Distance"); dataFile.close(); } */ } void loop() { if(0>accleration) { digitalWrite(brakelight,HIGH); } if(02) { distance=diameter*wheelcount*pi; velocity=diameter/(instant-previnstant)*pi; accleration=2*diameter*pi*(1/(instant-previnstant)-1/(previnstant-prevprevinstant))/(instant-prevprevinstant); velocity=velocity*1000; accleration=accleration*100000000; unit3=0; unit2=0; unit1=0; } }