Ciao, dopo molto tempo ho ripreso in mano l’arduino UNO che ho e ho deciso di farmi un computer home-made per la bicicletta.
Le funzioni sono le solite standard (velocità, distanza, tempo ecc.) però voglio avere la possibilità di visualizzare sullo schermo anche la pendenza della strada che sto percorrendo. Dunque come posso fare, utilizzando i valori dei 3 assi dell’accelerometro?
In questo momento l’accelerometro è collegato così:
SL → 3.3v
0g → non collegato
GS → GND
ST → GND
VCC → 3.3v
EDIT: ho dimenticato il codice che sto usando:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <math.h>
#define SCLK 7
#define DIN 6
#define DC 5
#define CS 4
#define RST 3
#define LM35_PIN A3
Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, DC, CS, RST);
// Define the axis variables
int x = 0;
int y = 0;
int z = 0;
double angleYZ = 0;
double angleXZ = 0;
// Define values for LM35
int val;
float temp;
void setup() {
Serial.begin(9600);
analogReference(EXTERNAL); // HO COLLEGATO AREF AI 3.3V
// Initialize the LCD
display.begin();
display.setContrast(25);
display.setTextSize(1);
display.setTextColor(BLACK);
}
void loop() {
x = analogRead(0);
y = analogRead(1);
z = analogRead(2);
x = map (x, 0, 1023, -511, 511);
y = map (y, 0, 1023, -511, 511);
z = map (z, 0, 1023, -511, 511);
angleYZ = atan ((double) y / (double) z);
angleYZ = angleYZ * 57,2958;
angleXZ = atan ((double) x / (double) z);
angleXZ = angleXZ * 57,2958;
val = analogRead(LM35_PIN);
temp = val * 0.322265625;
display.clearDisplay();
display.setCursor(0,0);
display.print("YZ = ");
display.println(angleYZ);
display.print("XZ = ");
display.println(angleXZ);
display.print("temp = ");
display.println(temp);
display.display();
Serial.print("\nx: ");
Serial.print(x);
Serial.print("\ty: ");
Serial.print(y);
Serial.print("\tz: ");
Serial.print(z);
delay(100);
}