SlideShare a Scribd company logo
1 of 10
Download to read offline
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare,
sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document
poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
Arduino si indicatoare pentru CPU si memoria RAM
In acest tutorial vei descoperi cum se poate construi un bord cu 2 indicatoare pentru activitatea
procesorului si capacitatea memoriei RAM. Vei descoperi cum se citesc cele 2 valori printr-un script
Python si cum se vor transmite, serial, catre o placa Arduino.
Ca indicatoare vei folosi 2 servomotoare conectate la o placa Arduino. In functie de valorile
primite pe seriala placa va modifica pozitia bratelor servomotoarelor.
Vei avea nevoie de urmatoarele componente:
• O placa Arduino - http://www.robofun.ro/arduino
• 2 servomotoare - http://www.robofun.ro/mecanice/servo
• Un alimentator extern Arduino
http://www.robofun.ro/surse_de_alimentare/alimentatoare/alimentator-extern-arduino
• Un breadboard - http://www.robofun.ro/breadboard
• Un cablu USB - http://www.robofun.ro/cabluri/cablu_usb_1_5m_male_a_male_b
Cum construiesc indicatorul ?
In tutorialul de fata indicatorul cu cele 2 servomotoare a fost realizat dintr-o bucata de carton
peste care s-a lipit o coala alba desenata cu 2 cadrane. S-au dat 2 gauri pe unde se fixeaza bratele
servomotoarelor iar servomotoarele s-au lipit cu banda dublu adeziva.
Panoul va arata ca in imaginea de mai jos.
http://www.robofun.ro/forum
Cum se conecteaza servomotoarele ?
Cele 2 servomotoare se vor conecta urmand tabelul de mai jos. Te vei folosi de breadboard
pentru a conecta alimentarile servomotoarelor.
Arduino 5V Servomotor 1 fir Rosu
Arduino GND Servomotor 1 fir Negru
Arduino digital 5 Servomotor 1 fir Alb
Arduino 5V Servomotor 2 fir Rosu
Arduino GND Servomotor 2 fir Negru
Arduino digital 6 Servomotor 2 fir Alb
Deoarece servomotoarele consuma mai mult decat poate oferi portul USB al calculatorului, vei
conecta alimentatorul extern de 9V in mufa placii Arduino.
In final vei obtine urmatorul montaj.
http://www.robofun.ro/forum
Codul sursa pentru Arduino.
Codul sursa pentru placa Arduino este listat mai jos. Se copiaza cu copy/paste si se incarca in
placa.
#include <Servo.h> //Used to control the Pan/Tilt Servos
//These are variables that hold the servo IDs.
char tiltChannel=0, panChannel=1;
//These are the objects for each servo.
Servo servoTilt, servoPan;
//This is a character that will hold data from the Serial port.
char serialChar=0;
http://www.robofun.ro/forum
void setup(){
servoTilt.attach(5); //The Tilt servo is attached to pin 5.
servoPan.attach(6); //The Pan servo is attached to pin 6.
servoTilt.write(70); //Initially put the servos both
servoPan.write(160); //at 90 degress.
//delay(5000);
Serial.begin(9600); //Set up a serial connection for 9600 bps.
}
void loop(){
while(Serial.available() <=0); //Wait for a character on the
serial port.
serialChar = Serial.read(); //Copy the character from the
serial port to the variable
if(serialChar == tiltChannel){ //Check to see if the character
is the servo ID for the tilt servo
while(Serial.available() <=0); //Wait for the second command
byte from the serial port.
servoTilt.write(180 - Serial.read()); //Set the tilt servo
position to the value of the second command byte received on the
serial port
}
else if(serialChar == panChannel){ //Check to see if the initial
serial character was the servo ID for the pan servo.
while(Serial.available() <= 0); //Wait for the second command
byte from the serial port.
servoPan.write(180 - Serial.read()); //Set the pan servo
position to the value of the second command byte received from the
serial port.
}
//If the character is not the pan or tilt servo ID, it is
ignored.
}
Codul sursa Python.
Codul sursa de mai jos se executa in Python 2.7
• Inainte de toate se va instala Python de la urmatoarea adresa:
http://www.python.org/download/releases/2.7/
• Se adauga linia de mai jos in System Path. In Windows 7 System Path se acceseaza din
Computer – Properties – Advanced System Settings – Advanced – Environment Variables.
Linia ce trebuie adaugata:
http://www.robofun.ro/forum
C:Python27
• Asa arata System Path cu linia de mai sus.
• Se deschide IDLE(Python GUI) si din File – New Window se creaza fereastra in care vei copia
codul sursa de mai jos.
http://www.robofun.ro/forum
• Urmeaza sa modifici o linie care reprezinta defapt portul USB la care este conectata placa
Arduino.
usbport = 'COM7'
• In cazul de fata placa Arduino a fost conectata la portul COM7. Portul se poate identifica direct
din mediul Arduino.
• Urmeaza sa rulezi programul din Run – Run Module.
http://www.robofun.ro/forum
• Din acest moment script-ul Python va transmite catre placa Arduino 3 valori dintre care 2 sunt
valorile la care se vor deplasa bratele servomotoarelor. Un servomotor este responsabil cu
indicarea nivelului de utilizare al procesorului iar celalalt servomotor se ocupa cu indicarea
capacitatii memoriei RAM.
• In functie de sistemul de operare pe care ai instalat Python, este posibil sa primesti erori cu
privire la lipsa unor librarii. Adica este posibil ca unul din modulele serial, sys, time si psutil sa iti
lipseasca. In acest caz vei instala librariile lipsa.
http://www.robofun.ro/forum
#!/usr/bin/env python
import serial, sys, time, psutil
# Assign Arduino's serial port address
# Windows example
# usbport = 'COM3'
# Linux example
# usbport = '/dev/ttyUSB0'
# MacOSX example
# usbport = '/dev/tty.usbserial-FTALLOK2'
usbport = 'COM7'
# Set up serial baud rate
ser = serial.Serial(usbport, 9600, timeout=1)
def move(servo, angle):
'''Moves the specified servo to the supplied angle.
Arguments:
servo
the servo number to command, an integer from 1-4
angle
the desired servo angle, an integer from 0 to 180
(e.g.) >>> servo.move(2, 90)
... # "move servo #2 to 90 degrees"'''
if (0 <= angle <= 180):
ser.write(chr(255))
ser.write(chr(servo))
ser.write(chr(angle))
else:
print "Servo angle must be an integer between 0 and 180.n"
def main():
while 1:
cpu_percent = psutil.cpu_percent(interval=1,
percpu=False)
mem_percent = psutil.phymem_usage().percent
cpu_angle = int(cpu_percent / 100 * 180)
mem_angle = int(mem_percent / 100 * 180)
cpu_str = "CPU: " + str(cpu_percent) + " % (" +
str(cpu_angle) + "/180)"
mem_str = "Mem: " + str(mem_percent) + " % (" +
str(mem_angle) + "/180)"
http://www.robofun.ro/forum
print cpu_str
print mem_str
move(0, cpu_angle)
move(1, mem_angle)
if __name__ == "__main__":
sys.exit(main())
http://www.robofun.ro/forum

More Related Content

Viewers also liked

Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduinoIulius Bors
 
Curs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreCurs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreIulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Iulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizatorIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaIulius Bors
 
Curs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareCurs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareIulius Bors
 

Viewers also liked (19)

Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduino
 
Curs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreCurs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometre
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Arduino pid
Arduino pidArduino pid
Arduino pid
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocs
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizator
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzoriforta
 
Curs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareCurs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicare
 
Arduino rtc
Arduino rtcArduino rtc
Arduino rtc
 

Similar to Arduino indicatoare cp-usiram

Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shieldIulius Bors
 
Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciIulius Bors
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aIulius Bors
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry piIulius Bors
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Arduino capacitive sensor-robofun
Arduino capacitive sensor-robofunArduino capacitive sensor-robofun
Arduino capacitive sensor-robofunIulius Bors
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetruIulius Bors
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriIulius Bors
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wireIulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 

Similar to Arduino indicatoare cp-usiram (20)

Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul intern
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shield
 
Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogici
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-a
 
Arduino - PWM
Arduino - PWMArduino - PWM
Arduino - PWM
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry pi
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Arduino capacitive sensor-robofun
Arduino capacitive sensor-robofunArduino capacitive sensor-robofun
Arduino capacitive sensor-robofun
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetru
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblink
 
Arduino eeprom
Arduino   eepromArduino   eeprom
Arduino eeprom
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uri
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wire
 
Arduino mod-gps
Arduino mod-gpsArduino mod-gps
Arduino mod-gps
 
Proiect PP
Proiect PPProiect PP
Proiect PP
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 
Mc cap 7
Mc cap 7Mc cap 7
Mc cap 7
 
Mc cap 1
Mc cap 1Mc cap 1
Mc cap 1
 
Laborator 5
Laborator 5Laborator 5
Laborator 5
 

More from Iulius Bors

Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspotIulius Bors
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Iulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetIulius Bors
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 

More from Iulius Bors (9)

Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspot
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernet
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 

Arduino indicatoare cp-usiram

  • 1. Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
  • 2. Arduino si indicatoare pentru CPU si memoria RAM In acest tutorial vei descoperi cum se poate construi un bord cu 2 indicatoare pentru activitatea procesorului si capacitatea memoriei RAM. Vei descoperi cum se citesc cele 2 valori printr-un script Python si cum se vor transmite, serial, catre o placa Arduino. Ca indicatoare vei folosi 2 servomotoare conectate la o placa Arduino. In functie de valorile primite pe seriala placa va modifica pozitia bratelor servomotoarelor. Vei avea nevoie de urmatoarele componente: • O placa Arduino - http://www.robofun.ro/arduino • 2 servomotoare - http://www.robofun.ro/mecanice/servo • Un alimentator extern Arduino http://www.robofun.ro/surse_de_alimentare/alimentatoare/alimentator-extern-arduino • Un breadboard - http://www.robofun.ro/breadboard • Un cablu USB - http://www.robofun.ro/cabluri/cablu_usb_1_5m_male_a_male_b Cum construiesc indicatorul ? In tutorialul de fata indicatorul cu cele 2 servomotoare a fost realizat dintr-o bucata de carton peste care s-a lipit o coala alba desenata cu 2 cadrane. S-au dat 2 gauri pe unde se fixeaza bratele servomotoarelor iar servomotoarele s-au lipit cu banda dublu adeziva. Panoul va arata ca in imaginea de mai jos. http://www.robofun.ro/forum
  • 3. Cum se conecteaza servomotoarele ? Cele 2 servomotoare se vor conecta urmand tabelul de mai jos. Te vei folosi de breadboard pentru a conecta alimentarile servomotoarelor. Arduino 5V Servomotor 1 fir Rosu Arduino GND Servomotor 1 fir Negru Arduino digital 5 Servomotor 1 fir Alb Arduino 5V Servomotor 2 fir Rosu Arduino GND Servomotor 2 fir Negru Arduino digital 6 Servomotor 2 fir Alb Deoarece servomotoarele consuma mai mult decat poate oferi portul USB al calculatorului, vei conecta alimentatorul extern de 9V in mufa placii Arduino. In final vei obtine urmatorul montaj. http://www.robofun.ro/forum
  • 4. Codul sursa pentru Arduino. Codul sursa pentru placa Arduino este listat mai jos. Se copiaza cu copy/paste si se incarca in placa. #include <Servo.h> //Used to control the Pan/Tilt Servos //These are variables that hold the servo IDs. char tiltChannel=0, panChannel=1; //These are the objects for each servo. Servo servoTilt, servoPan; //This is a character that will hold data from the Serial port. char serialChar=0; http://www.robofun.ro/forum
  • 5. void setup(){ servoTilt.attach(5); //The Tilt servo is attached to pin 5. servoPan.attach(6); //The Pan servo is attached to pin 6. servoTilt.write(70); //Initially put the servos both servoPan.write(160); //at 90 degress. //delay(5000); Serial.begin(9600); //Set up a serial connection for 9600 bps. } void loop(){ while(Serial.available() <=0); //Wait for a character on the serial port. serialChar = Serial.read(); //Copy the character from the serial port to the variable if(serialChar == tiltChannel){ //Check to see if the character is the servo ID for the tilt servo while(Serial.available() <=0); //Wait for the second command byte from the serial port. servoTilt.write(180 - Serial.read()); //Set the tilt servo position to the value of the second command byte received on the serial port } else if(serialChar == panChannel){ //Check to see if the initial serial character was the servo ID for the pan servo. while(Serial.available() <= 0); //Wait for the second command byte from the serial port. servoPan.write(180 - Serial.read()); //Set the pan servo position to the value of the second command byte received from the serial port. } //If the character is not the pan or tilt servo ID, it is ignored. } Codul sursa Python. Codul sursa de mai jos se executa in Python 2.7 • Inainte de toate se va instala Python de la urmatoarea adresa: http://www.python.org/download/releases/2.7/ • Se adauga linia de mai jos in System Path. In Windows 7 System Path se acceseaza din Computer – Properties – Advanced System Settings – Advanced – Environment Variables. Linia ce trebuie adaugata: http://www.robofun.ro/forum
  • 6. C:Python27 • Asa arata System Path cu linia de mai sus. • Se deschide IDLE(Python GUI) si din File – New Window se creaza fereastra in care vei copia codul sursa de mai jos. http://www.robofun.ro/forum
  • 7. • Urmeaza sa modifici o linie care reprezinta defapt portul USB la care este conectata placa Arduino. usbport = 'COM7' • In cazul de fata placa Arduino a fost conectata la portul COM7. Portul se poate identifica direct din mediul Arduino. • Urmeaza sa rulezi programul din Run – Run Module. http://www.robofun.ro/forum
  • 8. • Din acest moment script-ul Python va transmite catre placa Arduino 3 valori dintre care 2 sunt valorile la care se vor deplasa bratele servomotoarelor. Un servomotor este responsabil cu indicarea nivelului de utilizare al procesorului iar celalalt servomotor se ocupa cu indicarea capacitatii memoriei RAM. • In functie de sistemul de operare pe care ai instalat Python, este posibil sa primesti erori cu privire la lipsa unor librarii. Adica este posibil ca unul din modulele serial, sys, time si psutil sa iti lipseasca. In acest caz vei instala librariile lipsa. http://www.robofun.ro/forum
  • 9. #!/usr/bin/env python import serial, sys, time, psutil # Assign Arduino's serial port address # Windows example # usbport = 'COM3' # Linux example # usbport = '/dev/ttyUSB0' # MacOSX example # usbport = '/dev/tty.usbserial-FTALLOK2' usbport = 'COM7' # Set up serial baud rate ser = serial.Serial(usbport, 9600, timeout=1) def move(servo, angle): '''Moves the specified servo to the supplied angle. Arguments: servo the servo number to command, an integer from 1-4 angle the desired servo angle, an integer from 0 to 180 (e.g.) >>> servo.move(2, 90) ... # "move servo #2 to 90 degrees"''' if (0 <= angle <= 180): ser.write(chr(255)) ser.write(chr(servo)) ser.write(chr(angle)) else: print "Servo angle must be an integer between 0 and 180.n" def main(): while 1: cpu_percent = psutil.cpu_percent(interval=1, percpu=False) mem_percent = psutil.phymem_usage().percent cpu_angle = int(cpu_percent / 100 * 180) mem_angle = int(mem_percent / 100 * 180) cpu_str = "CPU: " + str(cpu_percent) + " % (" + str(cpu_angle) + "/180)" mem_str = "Mem: " + str(mem_percent) + " % (" + str(mem_angle) + "/180)" http://www.robofun.ro/forum
  • 10. print cpu_str print mem_str move(0, cpu_angle) move(1, mem_angle) if __name__ == "__main__": sys.exit(main()) http://www.robofun.ro/forum