fisica facile
Esercizi svolti di Fisica. Il primo blog interamente dedicato alla risoluzione di esercizi scolastici e problemi da esame
Post n°24 pubblicato il 13 Febbraio 2025 da rebel_mc
#include <SoftwareSerial.h> #include <Wire.h> #include <MPU6050.h> MPU6050 mpu; #define trigPin 11 #define echoPin 12 SoftwareSerial BTSerial(2, 3); //motore a int enA = 5; int in1 = 7; int in2 = 8; //motore b int in3 = 9; int in4 = 10; int enB = 6; int vel=140; int accelerazione=0; long durata; long distance; void setup() { //imposta i motori come output pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); BTSerial.begin(9600); Serial.begin(9600); BTSerial.println("Initialize MPU6050"); while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) { BTSerial.println("Could not find a valid MPU6050 sensor, check wiring!"); delay(500); } // If you want, you can set accelerometer offsets // mpu.setAccelOffsetX(); // mpu.setAccelOffsetY(); // mpu.setAccelOffsetZ(); checkSettings(); } void checkSettings() { BTSerial.println(); BTSerial.print(" * Sleep Mode: "); BTSerial.println(mpu.getSleepEnabled() ? "Enabled" : "Disabled"); BTSerial.print(" * Clock Source: "); switch(mpu.getClockSource()) { case MPU6050_CLOCK_KEEP_RESET: BTSerial.println("Stops the clock and keeps the timing generator in reset"); break; case MPU6050_CLOCK_EXTERNAL_19MHZ: BTSerial.println("PLL with external 19.2MHz reference"); break; case MPU6050_CLOCK_EXTERNAL_32KHZ: BTSerial.println("PLL with external 32.768kHz reference"); break; case MPU6050_CLOCK_PLL_ZGYRO: BTSerial.println("PLL with Z axis gyroscope reference"); break; case MPU6050_CLOCK_PLL_YGYRO: BTSerial.println("PLL with Y axis gyroscope reference"); break; case MPU6050_CLOCK_PLL_XGYRO: BTSerial.println("PLL with X axis gyroscope reference"); break; case MPU6050_CLOCK_INTERNAL_8MHZ: BTSerial.println("Internal 8MHz oscillator"); break; } BTSerial.print(" * Accelerometer: "); switch(mpu.getRange()) { case MPU6050_RANGE_16G: BTSerial.println("+/- 16 g"); break; case MPU6050_RANGE_8G: BTSerial.println("+/- 8 g"); break; case MPU6050_RANGE_4G: BTSerial.println("+/- 4 g"); break; case MPU6050_RANGE_2G: BTSerial.println("+/- 2 g"); break; } BTSerial.print(" * Accelerometer offsets: "); BTSerial.print(mpu.getAccelOffsetX()); BTSerial.print(" / "); BTSerial.print(mpu.getAccelOffsetY()); BTSerial.print(" / "); BTSerial.println(mpu.getAccelOffsetZ()); BTSerial.println(); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { if (vel>255){ vel=120; accelerazione=0; } if (accelerazione==1){ vel = vel+10; analogWrite(enA, vel); analogWrite(enB, vel); BTSerial.print("velocità = "); BTSerial.println(vel); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); durata = pulseIn(echoPin, HIGH); distance=durata*340/20000; BTSerial.print("distanza = "); BTSerial.println(distance); Vector rawAccel = mpu.readRawAccel(); Vector normAccel = mpu.readNormalizeAccel(); //Serial.print(" Xraw = "); //Serial.print(rawAccel.XAxis); //Serial.print(" Yraw = "); //Serial.print(rawAccel.YAxis); //Serial.print(" Zraw = "); //Serial.println(rawAccel.ZAxis); BTSerial.print(" Xnorm = "); BTSerial.println(normAccel.XAxis); //Serial.print(" Ynorm = "); //Serial.print(normAccel.YAxis); //Serial.print(" Znorm = "); //Serial.println(normAccel.ZAxis); BTSerial.println(" "); delay(100); } if(BTSerial.available()){ char command = BTSerial.read(); if(command == 'a'){ accelerazione=1; digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, vel); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, vel); } else if(command == 's'){ accelerazione=0; digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(enA, 140); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 140); } else if(command == 'd'){ accelerazione=0; analogWrite(enA, 140); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enB, 140); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } else if(command == 'f'){ accelerazione=0; analogWrite(enA, 140); digitalWrite(in1, LOW); digitalWrite(in2, LOW); analogWrite(enB, 140); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } else if(command == 'e'){ digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); accelerazione=0; } else if(command == 'x'){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); durata = pulseIn(echoPin, HIGH); distance=durata*340/20000; BTSerial.print("distanza = "); BTSerial.println(distance); } } } |
Post n°23 pubblicato il 16 Gennaio 2025 da rebel_mc
#include <SoftwareSerial.h> #define trigPin 11 #define echoPin 12 SoftwareSerial BTSerial(2, 3); //motore a int enA = 5; int in1 = 7; int in2 = 8; //motore b int in3 = 9; int in4 = 10; int enB = 6; int i=255; long durata; long distance; void setup() { //imposta i motori come output pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); BTSerial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { if(BTSerial.available()){ char command = BTSerial.read(); if(command == 'a'){ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 140); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 140); } else if(command == 's'){ digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(enA, 140); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 140); } else if(command == 'd'){ analogWrite(enA, 140); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enB, 140); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } else if(command == 'f'){ analogWrite(enA, 140); digitalWrite(in1, LOW); digitalWrite(in2, LOW); analogWrite(enB, 140); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } else if(command == 'e'){ digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } else if(command == 'x'){ for (int i = 0; i <= 9; i++) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); durata = pulseIn(echoPin, HIGH); distance=durata*340/20000; BTSerial.println(distance); delay(200); } } } } |
Post n°22 pubblicato il 02 Febbraio 2023 da rebel_mc
// sketch sensore distanza per ARDUINO UNO con indicatore sonoro #define TRIG_PIN 10 #define ECHO_PIN 9 #define sound_pin 7
void setup() { Serial.begin(9600); pinMode(sound_pin, OUTPUT); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); digitalWrite(TRIG_PIN, LOW); } void loop() { digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); int tempo = pulseIn(ECHO_PIN, HIGH); int distanza = 0.03438 * tempo /2; tone(sound_pin,500,30); delay(10*distanza); delay (10); } |
sketch ARDUINO UNO per realizzare un sensore di distanza con modulo HC-SR04
#define TRIG_PIN 10 #define ECHO_PIN 9 #define sound_pin 7
void setup() {
Serial.begin(9600); pinMode(sound_pin, OUTPUT); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); digitalWrite(TRIG_PIN, LOW);
}
void loop() {
digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); int tempo = pulseIn(ECHO_PIN, HIGH); int distanza = 0.03438 * tempo /2; Serial.println (distanza); Serial.println (tempo); delay (500); } |
Post n°20 pubblicato il 07 Maggio 2012 da rebel_mc
Un fascio di protoni inizialmente in quiete viene accelerato tramite una d.d.p. (differenza di potenziale) DV = 1000 V ed entra in una regione di spazio ove è presente un campo di induzione magnetica B = 0.1 T uniforme (vedi figura). Calcolare il raggio della traiettoria circolare percorsa all'interno della regione di campo magnetico e le coordinate del punto di uscita. Soluzione. L(A --> C) = Ec(C) - Ec(A) L(A --> C) = Ec(C) [poichè Ec(A) = 0 per ipotesi] ma il lavoro è L = q DV [lavoro della forza elettrostatica] quindi q DV = 1/2 m v2 dove q è la carica del protone DV è la d.d.p. tra le piastre del generatore di tensione m è la massa del protone v la velocità nel punto C (punto di ingresso nella zona con campo magnetico B). v = √ (2 q DV / m) A questo punto i protoni entrano nella zona di campo magnetico, il quale è diretto perpendicolarmente alla traiettoria d'ingresso ed ha verso uscente dal piano del foglio. Essi risentono della Forza di Lorentz data dalla formula FL = q v x B (in grassetto sono rappresentate quantità vettoriali) il prodotto vettoriale ha modulo qvB in quanto i vettori v e B sono tra loro ortogonali, quindi FL = q v B Nota: grazie alla regola delle tre dita possiamo notare come la direzione del vettore FL sia sempre a destra della traiettoria e perpendicolare ad essa. ne risulta quindi una forza centrale e di conseguenza una traiettoria complessiva di forma circolare con raggio R. Percorrendo una traiettoria circolare i protoni avranno accelerazione centripeta e dal secondo principio della dinamica: FL = m a ma = m v2 / R quindi FL = m v2 / R q v B = m v2 / R R = m v / q B Se sostituiamo l'espressione trovata prima per v si ha R = (m / q B) √ (2 q DV / m ) =√ (2m DV / q B2) = 4.5 cm m = 10-27 kg; q = 10-19 C; DV = 1000V; B = 0.1 T. Se fissiamo l'origine degli assi cartesiani nel punto di ingresso (punto C) allora il punto di uscita D (vedi fig.) avrà coordinate D = (0; - 2R). |
Post n°19 pubblicato il 30 Gennaio 2012 da rebel_mc
Un corpo di massa m=500 g, si trova, fermo, sulla sommità di un piano inclinato liscio di 45° rispetto all'orizzontale. Ad un certo istante viene lasciato libero di percorre sul piano una distanza di 20 m prima di entrare in una parte del piano scabra. Se il corpo si arresta dopo aver percorso altri 20 m sul piano inclinato scabro, calcolare quanto vale il coefficiente di attrito dinamico. Soluzione. Fissiamo l'asse X lungo il piano inclinato con verso a scendere. non è difficile vedere (figura) che il dislivello h tra i punti (0) ed (1) sia proprio h = l sin α |
Un oggetto di forma cilindrica alto 20 cm pesa 140 N. Quando viene immerso completamente in acqua pesa 100N. Calcolare il diametro del cilindro. Soluzione. Far = r g V dove V è il volume del cilindro, r è la densità dell'acqua, g è l'accelerazione di gravità. V = p h D2/ 4 Quindi il peso del cilindro in acqua sarà: P' = P - Far = P - r g p h D2/ 4 P' = P - r g p h D2/ 4 Tramite formula inversa troviamo quindi il diametro D del cilindro D = √ 4(P - P' ) / r g p h = 0,16 m |
HELP ME!!
Se non riesci a risolvere i tuoi problemi
prova a contattarmi!
SCEGLI L'ARGOMENTO NEI TAGS
TAG
CERCA IN QUESTO BLOG
ULTIMI COMMENTI
Inviato da: Enrico Barbarino
il 27/07/2021 alle 18:24
Inviato da: lucky
il 10/09/2013 alle 14:45
Inviato da: Peluche grenouille
il 02/09/2013 alle 08:31
Inviato da: rebel_mc
il 07/02/2013 alle 17:47
Inviato da: carmelo
il 30/01/2013 alle 18:21
Calcolare l'altezza max raggiunta dall'oggetto e il tempo impiegato a raggiungerla.
Dire motivando la risposta, se una volta raggiunta l'altezza max il blocco resterà fermo o tenderà a ridiscendere.