Indice
Descrizione
I sensori magnetici ad effetto Hall sono strumenti versatili e disponibili in diverse tipologie, tra cui lineari, unipolari e bipolari. Ogni tipo ha applicazioni specifiche, ma i sensori lineari ad effetto Hall sono particolarmente apprezzati per la loro capacità di misurare l’intensità dei campi magnetici.
In questa guida, scoprirai come utilizzare un sensore Hall lineare con Arduino, passando attraverso ogni fase del processo: dal collegamento del sensore alla scheda, alla scrittura dello sketch per acquisire dati sul campo magnetico. Con questo sensore, non solo puoi rilevare la presenza di un campo magnetico, ma anche misurarne l'intensità e la polarità, aprendo nuove possibilità per progetti sempre più interessanti.
#define ANALOG_PIN A0
#define DIGITAL_PIN 2
void setup() {
Serial.begin(9600);
pinMode(DIGITAL_PIN, INPUT);
}
void loop() {
int analogValue = analogRead(ANALOG_PIN);
int digitalValue = digitalRead(DIGITAL_PIN);
Serial.print("A: ");
Serial.print(analogValue);
Serial.print("\t\tD: ");
Serial.println(digitalValue ? "HIGH" : "LOW");
delay(100);
}
#include <LiquidCrystal_I2C.h>
#define ANALOG_PIN A0
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
int analogValue = analogRead(ANALOG_PIN);
int gauss = map(analogValue, 205, 819, -1000, 1000);
lcd.clear();
printCentered("SENSORE HALL", 0);
printCentered(String(gauss) + " Gauss", 1);
delay(200);
}
void printCentered(String text, int row) {
lcd.setCursor((16 - text.length()) / 2, row);
lcd.print(text);
}
#include <LiquidCrystal_I2C.h>
#define ANALOG_PIN A0
#define N_LED_PIN 8
#define S_LED_PIN 7
#define N_TRESHOLD 480
#define S_TRESHOLD 540
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
pinMode(N_LED_PIN, OUTPUT);
pinMode(S_LED_PIN, OUTPUT);
}
void loop() {
int analogValue = analogRead(ANALOG_PIN);
digitalWrite(N_LED_PIN, analogValue < N_TRESHOLD);
digitalWrite(S_LED_PIN, analogValue > S_TRESHOLD);
lcd.clear();
printCentered("CAMPO MAGNETICO", 0);
if (analogValue < N_TRESHOLD) {
printCentered("NORD", 1);
} else if (analogValue > S_TRESHOLD) {
printCentered("SUD", 1);
} else {
printCentered("---", 1);
}
delay(200);
}
void printCentered(String text, int row) {
lcd.setCursor((16 - text.length()) / 2, row);
lcd.print(text);
}