/* Due servomotori comandati da un joystick analogico,compsto cioè da due potenziometri solitamente da 10 kOhm Programma:test_Joystick_sparkfun.ino Versione: 1.0 Comando dispositivo Pan & Tilt tramite Nunchuk Porte utilizzate Pin +5V -> Alimentazione servo Pin GND -> Alimentazione Pin5 (PWM) servo Rotazione telecamera Pin6 (PEWM)servo Rotazione base Porta A2 Lettura potenziometro orizzontale Porta A3 Lettura potenziometro verticale Creato il 08/4/2013 da Adriano Gandolfo <http://www.adrirobot.it> This example code is in the public domain.*/ #include <Servo.h> Servo horzServo; Servo vertServo; int horzPin = 2; // pin A2 asse orizzontale int vertPin = 3; // pin A3 asse verticale int horzVal; int vertVal; void setup() { horzServo.attach(5); vertServo.attach(6); } void loop() { horzVal = analogRead(horzPin); horzVal = map(horzVal, 0, 1023, 0, 179); horzServo.write(horzVal); vertVal = analogRead(vertPin); vertVal = map(vertVal, 0, 1023, 0, 179); vertServo.write(vertVal); delay(15); }
ARDUINO Appunti
lunedì 5 gennaio 2015
Joystick analogico.
martedì 11 novembre 2014
Contatore generico.
contatto del relè NA è collegato al pin3.
Si impostano il n. degli oggetti con un potenziometro da 4,7K
su A0 (da 0 a 1023). Quando il n. degli oggetti contati è
uguale a quello impostato un relè (pin5) si eccita per 0,5 sec.
Dividendo il valore impostato per 10 si ottiene un fondoscala
di 123.
/* Impostare il valore con il potenziometro. Quando il numero di impulsi su Pin2 è uguale al valore impostato il relè si eccita. Fornito di antirimalzo. Il conteggio avanza sulo sul fronte di salita,ovvero non avanza se su pin2 permane in HIGH.Il valore impostato viene diviso per 10 per avere un fondoscala di 123. */
#include <LiquidCrystal.h> LiquidCrystal lcd( 8, 9, 10, 11, 12, 13); # define IMPOSTA A0 # define CONTA 3 # define RELE 5 # define RELE1 6 # define AZZERA 4 long ValueImposta = 0; long ValueImposta1 = 0; int ValueConta = 0; int lastValueConta = 0; byte contaImpulsi = 0; byte Merker = 0; void setup() { pinMode(IMPOSTA, INPUT ); pinMode(CONTA, INPUT ); pinMode(RELE, OUTPUT ); pinMode(RELE1, OUTPUT ); lcd.begin(16, 2); Serial.begin(9600); } void loop() { lcd.setCursor(0,0); lcd.print ("V.Impostato"); lcd.setCursor(0,1); lcd.print ("V.Contato"); //-------- Imposta il n. max di pezzi ------------ ValueImposta=analogRead(IMPOSTA); ValueImposta1 = (ValueImposta / 10); lcd.setCursor(13,0); lcd.print(ValueImposta1); //---------- Leggi pezzi su Pin2 ------------------- ValueConta = digitalRead(CONTA); if ( ValueConta != lastValueConta) { if ( ValueConta == HIGH) { contaImpulsi = contaImpulsi + 1; lcd.setCursor(13, 1); lcd.print(contaImpulsi); Serial.println(contaImpulsi); delay(20); }}// DebounceTime lastValueConta = ValueConta; /*---- -----CONFRONTO FRA I DUE DATI -------- arrivato al valore impostato il relè si eccita per mezzo secondo, il conteggio si azzera per poi reiniziare*/ if ( ValueImposta1 == contaImpulsi) { digitalWrite(RELE, HIGH); Serial.println("RELE ON"); Merker = HIGH; delay(500); contaImpulsi = 0; digitalWrite(RELE, LOW); Merker = LOW; lcd.clear(); delay(30); } /*------------ Esegui un'altra azione----------- La variabile Merker può essere usata per eseguire altre azioni. */ if ( Merker == HIGH) { digitalWrite(RELE1, HIGH); } }
Delay 2
Vedi anche Delay 1
/* Mentre BUTTON1 è a livello HIGH per 10 sec. tutto il LOOP è bloccato, infatti BUTTON2 non riesce ad accendere LED2 */ const int BUTTON1 = 2; const int LED1 = 12; int buttonState1 = 0; const int BUTTON2 = 3; const int LED2 = 13; int buttonState2 = 0; long pMillis = 0; long interval = 10000; void setup() { pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop(){ buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH) { digitalWrite(LED1, HIGH); delay (10000); } else { digitalWrite(LED1, LOW); } buttonState2 = digitalRead(BUTTON2); if ( buttonState2 == HIGH) { digitalWrite(LED2, HIGH); } else { digitalWrite(LED2, LOW); } }
Delay 1
/* Mentre BUTTON1 è a livello HIGH per 10 sec. tutto il LOOP è bloccato, infatti BUTTON2 non riesce ad accendere LED2 */ const int BUTTON1 = 2; const int LED1 = 12; int buttonState1 = 0; const int BUTTON2 = 3; const int LED2 = 13; int buttonState2 = 0; long pMillis = 0; long interval = 10000; void setup() { pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop(){ buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH) { digitalWrite(LED1, HIGH); delay (10000); } else { digitalWrite(LED1, LOW); } buttonState2 = digitalRead(BUTTON2); if ( buttonState2 == HIGH) { digitalWrite(LED2, HIGH); } else { digitalWrite(LED2, LOW); } }
Avvertenze
Nota: Non sono un programmatore il che implica l'eventuale presenza di errori nello sketch ed una certa ed inutile pesantezza dei programmi.
Le parentesi graffe sono posizionate secondo un mio personalissimo criterio.
Le parentesi graffe sono posizionate secondo un mio personalissimo criterio.
Iscriviti a:
Commenti (Atom)



