RaspberryPi puls breedte modulatie demonstratie (3 / 9 stap)

Stap 3: De programma-Code

 /*************************************************************************** * PWMdemo.c: * * Dependencies: wiringPi must be installed. * Instructions for download, install and use * are located at wiringpi.com * * Compile with: gcc -o PWMdemo PWMdemo.c -lwiringPi * * All pin numbers are wiringPi numbers unless otherwise specified. * * Pin 1 is the only hardware PWM pin available on all RaspberryPi models. * It is physical pin number 12 on the GPIO header. * * Pin 24 is the second hardware PWM pin available on model B+ only. * It is physical pin number 35 on the GPIO header. * * There is an LED (with series resistor) connected to PWMpin and ground. * An oscilloscope can be connected to PWMpin and ground. * * You can hear the tones if speakers are connected to the audio jack. * Changing the various settings can make the tones very loud. * * Menu choices: * * 1 Fade In-Out - Runs through a for loop one time. * It runs from 0 to 100% to 0 of the duty cycle in the * number of steps specified in the range. * * 2 Toggle the PWM mode between balanced and mark:space. * * 3 Set the range, the number of duty cycle steps between 0 and 100%. * * 4 Change the PWM clock. * * 5 Set the duty cycle. The duty cycle should not be greater than the range. * Duty cycle is 100% if duty cycle equals range. * * 6 QUIET sets duty cycle to zero. * ***************************************************************************/ 
 #include <wiringPi.h> #include <stdio.h> #define clrscr() printf("\e[1;1H\e[2J") // Clear screen. int PWMpin= 1; // 1 right (Or 24 left if model B+). /*************************************************************************** * menu() function - Display the menu and execute the choices. ***************************************************************************/ void menu(void) { int range = 1024; // value passed to pwmSetRange. int clock = 32; // value passed to pwmSetClock. int mode = 0; // 0=balanced, 1=mark:space int duty = 0; // Duty cycle int choice=0; int i; // Index for fade for loop. int x; // Fade in/out switch. 
 while(1) // Display the menu. { clrscr(); printf("\n\n Pulse Width Modulation Demonstration\n\n\n"); printf(" 1 - Fade In - Out\n"); printf(" 2 - Toggle PWM Mode: "); if(mode==0) printf("Balanced\n"); else printf("Mark:Space\n"); printf(" 3 - Set Range: %d\n", range); printf(" 4 - Set Clock: %d\n", clock); printf(" 5 - Set Duty Cycle: %d\n",duty); printf(" 6 - QUIET\n\n\n"); printf(" Press Selection: "); scanf("%d", &choice); 
 switch(choice) // Execute the choice. { case 1: // Fade duty cycle within 0 - range - 0. clrscr(); x = 1; for (i=0; i>-1; i+=x) { pwmWrite(PWMpin, i); printf(" %d\n", i); delay (7); if(i > range) x = -1; } pwmWrite(PWMpin, 0); duty=0; break; case 2: // toggle PWM mode Mark:Space/Balanced. mode = !mode; if(mode==0) pwmSetMode(PWM_MODE_BAL); else pwmSetMode(PWM_MODE_MS); pwmWrite(PWMpin, duty); break; case 3: // Change the range. (number of steps for duty cycle) printf("\n\n\n Enter Range: "); scanf("%d", &range); pwmSetRange(range); // Default 1024 (unsigned int) pwmWrite(PWMpin, duty); break; case 4: // Change the clock. printf("\n\n\n Enter Clock: "); scanf("%d", &clock); pwmSetClock(clock); // Default 32 (int) pwmWrite(PWMpin, duty); break; case 5: // Set the duty cycle. printf("\n\n\n Enter Duty Cycle: "); scanf("%d", &duty); pwmWrite(PWMpin, duty); break; case 6: // Quiet, set duty cycle to zero. duty = 0; pwmWrite(PWMpin, duty); break; } } } 
 /********************************************************************* * main() function *********************************************************************/ int main(void) { wiringPiSetup(); pinMode (PWMpin, PWM_OUTPUT); menu(); return 0; } 

Gerelateerde Artikelen

Arduino aan RPi: drie manieren om te converteren van 5 volt tot 3.3 volt

Arduino aan RPi: drie manieren om te converteren van 5 volt tot 3.3 volt

Er is een probleem wanneer een Arduino aansluiten op de GPIO op een RaspberryPi. Het niveau van de logica voor de Arduino is vijf volt en de RaspBerryPi vereist 3.3 volt. Verzenden van een vijf volt beschadigt signaal naar een GPIO pin de RaspberryPi
Knipperen Snap Circuits LED met Kano Computer

Knipperen Snap Circuits LED met Kano Computer

Ik zal laten zien hoe flitser een Snap Circuits LED met de Kano-Computer (mijn versie van de Kano heeft de Raspberry Pi 2). Ik heb verloren telling van hoeveel computers ik heb gebouwd door de jaren heen, maar ik denk dat het veilig om te zeggen dat
Arduino-controlled RGB LED Infinity spiegel

Arduino-controlled RGB LED Infinity spiegel

Update 11/22/2013: dank aan iedereen die gestemd voor dit project in de Microcontroller-wedstrijd! Het was een van de drie winnaars van de eerste-prijs.9/17/2013 update: dank aan iedereen die gestemd voor dit project in de wedstrijd van de Arduino (i
Noodle: een crowdsourced robot

Noodle: een crowdsourced robot

Noodle is een klein apparaat met de i/o van een machine, maar de gedachten en gevoelens van een mens. U kunt het controleren van uw fysieke ruimte en reageren op veranderingen in de omgeving met woorden, beelden, geluiden en besluiten programmeren.Bi
K-9 2.0. WiFi gecontroleerde en autonome Robot hond.

K-9 2.0. WiFi gecontroleerde en autonome Robot hond.

OPMERKING:In stap 22, heb ik gepost een update, verklaren sommige recente veranderingen/verbeteringen die ik, voornamelijk K-9 van elektrische systeem gemaakt heb en de sensor array, die u kunt nuttig vinden.FunctiesStevige houten (MDF) en acryl desi
Beheersing van richting en snelheid van gelijkstroommotor met Raspberry Pi

Beheersing van richting en snelheid van gelijkstroommotor met Raspberry Pi

Dit is een eenvoudige gids wanneer leert u hoe u kunt besturen gelijkstroommotoren met behulp van de Raspberry pi. Over raspberrypi - is het een cradit kaart grootte kleine computer die General-Purpose input-output GPIO pinnen die worden gebruikt hee
PiScope (Raspberry Pi gebaseerd oscilloscoop)

PiScope (Raspberry Pi gebaseerd oscilloscoop)

Een oscilloscoop is een instrument van de laboratorium gebruikte weergeven en analyseren van de golfvorm van elektronische signalen. In feite is het apparaat trekt een grafiek van de momentane signaal spanning als functie van de tijd.Oscilloscopen wo
Minidot 2 - de holoclock

Minidot 2 - de holoclock

Nou misschien holoclock is een beetje onnauwkeurig... het maakt gebruik van holografische dispersie film op de voorzijde te geven een beetje diepte.Fundamenteel dit instructable is een update van mijn eerdere Minidot hier gevestigd:en hier opnieuw me
Maken van uw eigen metronoom

Maken van uw eigen metronoom

Voor degenen onder u die er die een zwak hebben voor het afspelen van muziek, is dit instructable voor jou. Zoals de titel al aangeeft, zullen we het creëren onze eigen Instelbare metronoom met onderdelen verkrijgbaar bij Digilent Inc.Wij zullen voor
Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

M. A. Parker c2015Blinky, de knipperende LED, laat zien hoe met de taal C/C++ in Atmel Studio (AS) om te controleren de Atmel MCU poorten voor input en output (dat wil zeggen, IO) en het 'geheim' leven van de Atmel poort, PIN en DDR registers blijkt.
Hand-crank iPhone lader

Hand-crank iPhone lader

Ik had altijd al wilde iets maken dat mechanische naar elektrische energie omgezet. Dus toen ik een high-torque-motor uit een gebroken magnetron geborgen, wist ik precies wat ik ging doen mee.Dit Instructable details het maken van een hand-crank iPho
De schichtig Nightscape - Jed Diller en Ken Hoff

De schichtig Nightscape - Jed Diller en Ken Hoff

dit was een project van de 6 week gedaan als onderdeel van de dingen dat cursus aan de Universiteit van Colorado, Boulder.De schichtig Nightscape is een interactief kunstwerk geïnspireerd door Aparna Rao's stuk, "Pygmeeën." (Een link naar die ka
L298 (Motor Driver) en de Linkit One

L298 (Motor Driver) en de Linkit One

In dit instructable ik ga u laten zien hoe een Linkit één gebruik control motoren, dit project is voor mensen die willen bouwen uw eigen robots met de Linkit One, of hebben een paar van steiler motors die u wilt beheren. Voor dit project zullen we ee
Basic (PWM) Motor snelheidscontrole met behulp van de 555 Timer ICs

Basic (PWM) Motor snelheidscontrole met behulp van de 555 Timer ICs

Dit is het eerste deel van zou moeten een tweedelige instructable over controle van de snelheid van een DC-motor met behulp van de 555 timer ICs bedoeld om degenen die nog steeds beginnen te maken van elektronica een hobby en beginners zoals ik in ee