Devices & Components
Arduino Uno Rev3
Software & Tools
Arduino IDE
Project description
Code
Arduino_PWM_Demo_Board_V13.ino
arduino
This is the code i wrote
1/* Arduino PWM Demo Board 2 2015 Luis Sousa */ 3 4//Definio dos pinos 5int pulse_1 = 0; // pulse 10% on no pino x 6int pulse_2 = 1; // pulse 10% off no pino x 7int pulse_3 = 2; // inverter pulse 50% no pino x 8int pulse_4 = 3; // inverter pulse 50% no pino x 9int pulse_5 = 5; // 20ms 50 hz 50% no pino x 10int pulse_6 = 6; // 20ms 50 hz 50% invertida no pino x 11int sin_1 = 5; // saida sinusoidal 1 no pino x 12int sin_2 = 6; // saida sinusoidal 2 no pino x 13int clk = 13; // clock no pino x 14int led_1 = 10; // led 1 no pino x 15int led_2 = 11; // led 2 no pino x 16int switchPin = 4; // Comuta modo 1 ou modo 2 no pino x 17 18// Inicializao de variaveis 19int analog_1 = 0; //Valores da sinusoide 1 20int analog_2 = 0; //Valores da sinusoide 2 21float x = 0; 22int us = 975; 23int vin = 0; 24int vout = 0; 25boolean fixed_pulse = false; //permite variar a frequencia dos impulsos no modo 2 26 27void setup() 28{ 29 pinMode(pulse_1, OUTPUT); 30 pinMode(pulse_2, OUTPUT); 31 pinMode(pulse_3, OUTPUT); 32 pinMode(pulse_4, OUTPUT); 33 pinMode(pulse_5, OUTPUT); 34 pinMode(pulse_6, OUTPUT); 35 pinMode(sin_1, OUTPUT); 36 pinMode(sin_2, OUTPUT); 37 pinMode(led_1, OUTPUT); 38 pinMode(led_2, OUTPUT); 39 pinMode(clk, OUTPUT); //clock & LED de monitorizaao 40 pinMode(switchPin, INPUT); //Comuta modo 1 ou modo 2 41 pinMode(7, OUTPUT); // seleccao de modo. Pino 7 liga switchPin 42 digitalWrite(7, HIGH); // seleccao de modo. Pino 7 LOW/HIGH 43} 44 45void loop() 46{ 47 48 49 if (digitalRead(switchPin) == LOW) // Modo 2 - Gerador de impulsos 50 { 51 //T0 52 digitalWrite(clk, !(digitalRead(clk))); 53 digitalWrite(pulse_1, HIGH); 54 digitalWrite(pulse_2, LOW); 55 digitalWrite(pulse_5, !(digitalRead(pulse_5))); 56 digitalWrite(pulse_6, !(digitalRead(pulse_5))); 57 digitalWrite(pulse_3, digitalRead(pulse_5)); 58 digitalWrite(pulse_4, digitalRead(pulse_6)); 59 delayMicroseconds(us-55); 60 //delay(1); 61 62 //T1 63 digitalWrite(clk, !(digitalRead(clk))); 64 digitalWrite(pulse_1, LOW); 65 digitalWrite(pulse_2, HIGH); 66 delayMicroseconds(us); 67 // delay(1); 68 69 //T2 70 digitalWrite(clk, !(digitalRead(clk))); 71 delayMicroseconds(us); 72 // delay(1); 73 74 //T3 75 digitalWrite(clk, !(digitalRead(clk))); 76 delayMicroseconds(us); 77 // delay(1); 78 79 //T4 80 digitalWrite(clk, !(digitalRead(clk))); 81 delayMicroseconds(us); 82 // delay(1); 83 84 //T5 85 digitalWrite(clk, !(digitalRead(clk))); 86 delayMicroseconds(us); 87 // delay(1); 88 89 //T6 90 digitalWrite(clk, !(digitalRead(clk))); 91 vin=analogRead(0); 92 delayMicroseconds(us-100); 93 // delay(1); 94 95 //T7 96 digitalWrite(clk, !(digitalRead(clk))); 97 if (!fixed_pulse) us = 500 + vin; 98 delayMicroseconds(us); 99 // delay(1); 100 101 //T8 102 digitalWrite(clk, !(digitalRead(clk))); 103 delayMicroseconds(us); 104 // delay(1); 105 106 //T9 107 digitalWrite(clk, !(digitalRead(clk))); 108 delayMicroseconds(us); 109 // delay(1); 110 111 } 112 else // Modo 1 Gerador de sinusoide PWM + Controlador PWM 113 { 114 x = x + 15; 115 if (x > 628) x = 0; 116 vin = analogRead(0); 117 vout = int(vin / 4); // 1023/4 = 255, valor maximo que se pode escrever num porto PWM (8 bit) 118 119 analog_1 = int(128 + (vout / 2) * (sin(x / 100))); 120 analog_2 = int(128 + (vout / 2) * (sin(3.14 + x / 100))); 121 analogWrite(sin_1, analog_1); 122 analogWrite(sin_2, analog_2); 123 analogWrite(led_1, vout); // Saida PWM 1 124 analogWrite(led_2, 255 - vout); //Saida PWM 2 simetrica da 1 125 //digitalWrite(clk, !digitalRead(clk)); 126 } 127 128} 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
Arduino_PWM_Demo_Board_V13.ino
arduino
This is the code i wrote
1/* Arduino PWM Demo Board 2 2015 Luis Sousa */ 3 4//Definio dos 5 pinos 6int pulse_1 = 0; // pulse 10% on no pino x 7int pulse_2 = 1; // 8 pulse 10% off no pino x 9int pulse_3 = 2; // inverter pulse 50% no pino x 10int 11 pulse_4 = 3; // inverter pulse 50% no pino x 12int pulse_5 = 5; // 20ms 50 13 hz 50% no pino x 14int pulse_6 = 6; // 20ms 50 hz 50% invertida no pino x 15int 16 sin_1 = 5; // saida sinusoidal 1 no pino x 17int sin_2 = 6; // saida 18 sinusoidal 2 no pino x 19int clk = 13; // clock no pino x 20int led_1 = 21 10; // led 1 no pino x 22int led_2 = 11; // led 2 no pino x 23int switchPin 24 = 4; // Comuta modo 1 ou modo 2 no pino x 25 26// Inicializao de variaveis 27int 28 analog_1 = 0; //Valores da sinusoide 1 29int analog_2 = 0; //Valores da sinusoide 30 2 31float x = 0; 32int us = 975; 33int vin = 0; 34int vout = 0; 35boolean fixed_pulse 36 = false; //permite variar a frequencia dos impulsos no modo 2 37 38void setup() 39{ 40 41 pinMode(pulse_1, OUTPUT); 42 pinMode(pulse_2, OUTPUT); 43 pinMode(pulse_3, 44 OUTPUT); 45 pinMode(pulse_4, OUTPUT); 46 pinMode(pulse_5, OUTPUT); 47 pinMode(pulse_6, 48 OUTPUT); 49 pinMode(sin_1, OUTPUT); 50 pinMode(sin_2, OUTPUT); 51 pinMode(led_1, 52 OUTPUT); 53 pinMode(led_2, OUTPUT); 54 pinMode(clk, OUTPUT); //clock 55 & LED de monitorizaao 56 pinMode(switchPin, INPUT); //Comuta modo 1 ou modo 57 2 58 pinMode(7, OUTPUT); // seleccao de modo. Pino 7 liga switchPin 59 60 digitalWrite(7, HIGH); // seleccao de modo. Pino 7 LOW/HIGH 61} 62 63void 64 loop() 65{ 66 67 68 if (digitalRead(switchPin) == LOW) // Modo 2 - Gerador 69 de impulsos 70 { 71 //T0 72 digitalWrite(clk, !(digitalRead(clk))); 73 74 digitalWrite(pulse_1, HIGH); 75 digitalWrite(pulse_2, LOW); 76 digitalWrite(pulse_5, 77 !(digitalRead(pulse_5))); 78 digitalWrite(pulse_6, !(digitalRead(pulse_5))); 79 80 digitalWrite(pulse_3, digitalRead(pulse_5)); 81 digitalWrite(pulse_4, digitalRead(pulse_6)); 82 83 delayMicroseconds(us-55); 84 //delay(1); 85 86 //T1 87 digitalWrite(clk, 88 !(digitalRead(clk))); 89 digitalWrite(pulse_1, LOW); 90 digitalWrite(pulse_2, 91 HIGH); 92 delayMicroseconds(us); 93 // delay(1); 94 95 //T2 96 97 digitalWrite(clk, !(digitalRead(clk))); 98 delayMicroseconds(us); 99 // 100 delay(1); 101 102 //T3 103 digitalWrite(clk, !(digitalRead(clk))); 104 105 delayMicroseconds(us); 106 // delay(1); 107 108 //T4 109 digitalWrite(clk, 110 !(digitalRead(clk))); 111 delayMicroseconds(us); 112 // delay(1); 113 114 115 //T5 116 digitalWrite(clk, !(digitalRead(clk))); 117 delayMicroseconds(us); 118 119 // delay(1); 120 121 //T6 122 digitalWrite(clk, !(digitalRead(clk))); 123 124 vin=analogRead(0); 125 delayMicroseconds(us-100); 126 // delay(1); 127 128 129 //T7 130 digitalWrite(clk, !(digitalRead(clk))); 131 if (!fixed_pulse) 132 us = 500 + vin; 133 delayMicroseconds(us); 134 // delay(1); 135 136 //T8 137 138 digitalWrite(clk, !(digitalRead(clk))); 139 delayMicroseconds(us); 140 // 141 delay(1); 142 143 //T9 144 digitalWrite(clk, !(digitalRead(clk))); 145 146 delayMicroseconds(us); 147 // delay(1); 148 149 } 150 else // Modo 1 151 Gerador de sinusoide PWM + Controlador PWM 152 { 153 x = x + 15; 154 if (x 155 > 628) x = 0; 156 vin = analogRead(0); 157 vout = int(vin / 4); // 1023/4 158 = 255, valor maximo que se pode escrever num porto PWM (8 bit) 159 160 analog_1 161 = int(128 + (vout / 2) * (sin(x / 100))); 162 analog_2 = int(128 + (vout / 2) 163 * (sin(3.14 + x / 100))); 164 analogWrite(sin_1, analog_1); 165 analogWrite(sin_2, 166 analog_2); 167 analogWrite(led_1, vout); // Saida PWM 1 168 analogWrite(led_2, 169 255 - vout); //Saida PWM 2 simetrica da 1 170 //digitalWrite(clk, !digitalRead(clk)); 171 172 } 173 174} 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
Downloadable files
PWM Learning Board Shield PCB Diagram
JPG image of PCB. If you dont have Eagle software installed on you computer, you can view the PCB Image
PWM Learning Board Shield PCB Diagram
PWM Learning Board Shield Schematic Diagram
JPG Image of PWM Learning Board Circuit. If you dont have Eagle software installed on you computer, you can view the Circuit Image
PWM Learning Board Shield Schematic Diagram
PWM Learning Board Shield Schematic Diagram
Eagle File
PWM Learning Board Shield Schematic Diagram
PWM Learning Board Shield Schematic Diagram
JPG Image of PWM Learning Board Circuit. If you dont have Eagle software installed on you computer, you can view the Circuit Image
PWM Learning Board Shield Schematic Diagram
PWM Learning Board Shield Schematic Diagram
Eagle File
PWM Learning Board Shield Schematic Diagram
PWM Learning Board Shield PCB Diagram
JPG image of PCB. If you dont have Eagle software installed on you computer, you can view the PCB Image
PWM Learning Board Shield PCB Diagram
PWM Learning Board Shield Board Layout
Eagle File
PWM Learning Board Shield Board Layout
Comments
Only logged in users can leave comments