PWM-module op pcDuino (3 / 4 stap)

Stap 3: Testen van Code

#include < SPI.h >
#include < string.h >
#include < stdio.h >

#define STATUS_PIN 9
#define CS_PIN 10
#define MOSI_PIN 11
#define MISO_PIN 12
#define SCK_PIN 13

#define CMD_SET_ON_OFF 0x01
#define CMD_SET_POLARITY 0x02
#define CMD_SET_FREQ 0x03
#define CMD_SET_DUTY 0x04

#define USE_HARDWARE_SPI 1
#define SPI_MODE SPI_MODE0

#define MIN_DUTY 250
#define MAX_DUTY 1250

niet-ondertekende korte plicht [27];
unsigned char gIndex;
unsigned char groep;

#if(! USE_HARDWARE_SPI)
unsigned char SoftSpiTransfer (unsigned char gegevens)
{
unsigned char cnt;
unsigned char rst;

RST = 0;
voor (cnt = 0; cnt < 8; cnt ++)
{
eerste << = 1;
Als (data & 0x80)digitalWrite(MOSI_PIN,HIGH);
anders digitalWrite(MOSI_PIN,LOW);
digitalWrite(SCK_PIN,HIGH);
digitalWrite(SCK_PIN,LOW);
RST | = digitalRead(MISO_PIN);
gegevens << = 1;
}
retourneren van eerste;
}

#define SpiExchangeByte(x) SoftSpiTransfer(x)

#elif gedefinieerd PCDUINO_IDE
#define SpiExchangeByte(x) SPI.transfer(x,SPI_CONTINUE)
#else
#define SpiExchangeByte(x) SPI.transfer(x)
#endif

VOID DeviceSynchronize(void)
{
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
SpiExchangeByte(0);
}

VOID SendCmd (unsigned char cmd, unsigned char index, unsigned short waarde)
{
unsigned char CheckSum;
unsigned char valueL;
unsigned char valueH;

valueL = waarde & 0xff;
valueH = ((waarde >> 8) & 0xff);
CheckSum = 0x87;
SpiExchangeByte(0x87);
SpiExchangeByte(cmd);
CheckSum += cmd;
SpiExchangeByte (index), //index
CheckSum += index;
SpiExchangeByte(valueL);
CheckSum += valueL;
SpiExchangeByte(valueH);
CheckSum += valueH;
SpiExchangeByte (controlesom); //CheckSum
}

VOID SetPwmOnOff (unsigned char index, boolean op)
{
SendCmd(CMD_SET_ON_OFF,index,on);
}

VOID SetPwmDuty (unsigned char index, niet-ondertekende korte plicht)
{
SendCmd(CMD_SET_DUTY,index,duty);
}

VOID SetPwmFrequency (unsigned char index, niet-ondertekende korte frequentie)
{
SendCmd(CMD_SET_FREQ,index,frequency);
}

VOID Setup {}
Zet uw setup-code hier, om het eenmalig uit te voeren:
#if(USE_HARDWARE_SPI)
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE);
SPI.setClockDivider(SPI_CLOCK_DIV2);
#endif

groep = 0;
gIndex = 0;
plicht [0] = 970;
plicht [1] = 860;
plicht [2] = 480;
plicht [3] = 470;
plicht [4] = 690;
plicht [5] = 730;
plicht [6] = MIN_DUTY;

plicht [7] = MIN_DUTY;
plicht [8] = MIN_DUTY;
plicht [9] = MIN_DUTY;
recht [10] = MIN_DUTY;
plicht [11] = MIN_DUTY;
plicht [12] = MIN_DUTY;
recht [13] = MIN_DUTY;
plicht [14] = MIN_DUTY;
plicht [15] = MIN_DUTY;
plicht [16] = MIN_DUTY;
plicht [17] = MIN_DUTY;
plicht [18] = MIN_DUTY;
plicht [19] = MIN_DUTY;
plicht [20] = MIN_DUTY;
plicht [21] = MIN_DUTY;
recht [22] = MIN_DUTY;
plicht [23] = MIN_DUTY;
plicht [24] = MIN_DUTY;
plicht [25] = MIN_DUTY;
plicht [26] = MIN_DUTY;
DeviceSynchronize();

SetPwmDuty(0,970);
SetPwmDuty(1,860);
SetPwmDuty(2,480);
SetPwmDuty(3,470);
SetPwmDuty(4,690);
SetPwmDuty(5,730);

}

void loop {}
Zet uw belangrijkste code hier, om het herhaaldelijk uitvoeren:
char tmpChar;

scanf ("%c", & tmpChar);

Als ((tmpChar < '8') & & (tmpChar > = '0'))
{
gIndex = tmpChar - '0';
SetPwmOnOff(gIndex+group,1);
}
else if (tmpChar == 'z')
{
groep = 0;
}
else if (tmpChar == 'x')
{
groep = 8;
}
else if (tmpChar == 'c')
{
groep = 16;
}
else if (tmpChar == 'v')
{
Groep = 24;
}
else if (tmpChar == 'w')
{
Als (plicht [4] < MAX_DUTY) plicht [4] += 10;
SetPwmDuty(4,duty[4]);
}
else if (tmpChar == de ')
{
Als (plicht [4] > MIN_DUTY) plicht [4]-= 10;
SetPwmDuty(4,duty[4]);
}
else if (tmpChar == 'a')
{
Als (plicht [5] < MAX_DUTY) plicht [5] += 10;
SetPwmDuty(5,duty[5]);
}
else if (tmpChar == had')
{
Als (plicht [5] > MIN_DUTY) plicht [5]-= 10;
SetPwmDuty(5,duty[5]);
}
else if (tmpChar == 'i')
{
Als (plicht [3] < MAX_DUTY) plicht [3] += 10;
SetPwmDuty(3,duty[3]);
}
else if (tmpChar == 'k')
{
Als (plicht [3] > MIN_DUTY) plicht [3]-= 10;
SetPwmDuty(3,duty[3]);
}
else if (tmpChar == ' o ')
{
Als (plicht [2] < MAX_DUTY) plicht [2] += 10;
SetPwmDuty(2,duty[2]);
}
else if (tmpChar == 'l')
{
Als (plicht [2] > MIN_DUTY) plicht [2]-= 10;
SetPwmDuty(2,duty[2]);
}
else if (tmpChar == 'f')
{
Als (plicht [1] < MAX_DUTY) plicht [1] += 10;
SetPwmDuty(1,duty[1]);
}
else if (tmpChar == 'h')
{
Als (plicht [1] > MIN_DUTY) plicht [1]-= 10;
SetPwmDuty(1,duty[1]);
}
else if (tmpChar == 't')
{
Als (plicht [0] < MAX_DUTY) plicht [0] += 10;
SetPwmDuty(0,duty[0]);
}
else if (tmpChar == 'g')
{
Als (plicht [0] > MIN_DUTY) plicht [0]-= 10;
SetPwmDuty(0,duty[0]);
}

Als (tmpChar > = ' 0')printf("D0:%d-D1:%d-D2:%d-D3:%d-D4:%d-D5:%d-\n",duty[0],duty[1],duty[2],duty[3],duty[4],duty[5]);

}

Gerelateerde Artikelen

HY502B RFID module voor pcDuino

HY502B RFID module voor pcDuino

HY502B is een 14.3 Mhz in de buurt van veld RFID-module.Voor meer details verwijzen u wij u naar http://linksprite.com/wiki/index.php5?title=RFID_Reader/Write_Module_B _(SPI_interface)HY502B gebruik SPI om de communicatie met de host. pcDuino leveren
Experiment 16: Relais module op pcDuino

Experiment 16: Relais module op pcDuino

Een relais zit een elektrisch te bedienen schakelaar. Vele Relais gebruiken een elektromagneet te bedienen van een switch mechanisme mechanisch, maar andere operationele beginselen worden ook gebruikt. Relais worden gebruikt indien het noodzakelijk i
Arduino Hardware PWM voor stepper motor rijdt

Arduino Hardware PWM voor stepper motor rijdt

met ons nieuwe project, JustAddSharks, zijn wij erg benieuwd naar de ondersteuning van de ontwikkeling van open source controlesoftware voor laser scharen. We zijn meer dan blij voor mensen om te wijzigen van onze laser scharen, het controlesysteem v
Genereren van 50Hz PWM via PIC16F877A

Genereren van 50Hz PWM via PIC16F877A

HalloSignalen met behulp van PIC microcontroller, voor het genereren van PWM we de CCP module in het bestand kunt gebruiken en alles gemakkelijk zal zijn. Het kan echter niet deze zeer lage frequentie zoals 50Hz als gevolg van sommige beperkingen die
De grondbeginselen van de PIC - PWM

De grondbeginselen van de PIC - PWM

In deze eerste video zullen we kijken hoe te beginnen met behulp van de PWM-module in een PIC microcontroler.  Deze video's kregen grote en ik moest het opgesplitst omdat ik wil ervoor zorgen dat ik geef alle dat betrokken is.Geniet van!In de tweede
Goedkope OBD2 mededelingen over K-line (ISO 9141-2 en ISO 14230-4)

Goedkope OBD2 mededelingen over K-line (ISO 9141-2 en ISO 14230-4)

Dit is gewoon een OBD2-oplossing voor het toezicht op de sensoren in een voertuig. Het ondersteunt de K-lijn OBD2 seriële communicatie tussen een voertuig en een microcontroller. Deze mededeling van de K-lijn is ook bekend als ISO 9141-2 of ISO 14230
Ultrasone obstakel-vermijden Robot

Ultrasone obstakel-vermijden Robot

Dit is mijn poging om het ontwerpen en bouwen van een obstakel te vermijden robot! RekaBot (vernoemd naar een fee (:) kan detecteren obstakels met een ultrasone sensor die met hulp van een servo kunt verplaatsen. Op basis van de metingen die ze neemt
Vuurwerk-controlemodule

Vuurwerk-controlemodule

Een paar jaar geleden kwam ik een vuurwerk-controlemodule gebouwd door Instructables gebruiker: systemf92. Zijn module was een geweldig design (hier gevonden) en ik wist dat ik een dag bouwen iets dergelijks moet zou omdat het gecombineerd twee dinge
Aurora 9 x 18 RGB LED Kunst

Aurora 9 x 18 RGB LED Kunst

*** kijk op mijn blog voor een bijgewerkte versie van dit project en nog veel meer! ***Mijn obsessie voor LEDs heeft mij geleid tot dit. Aurora 9 x 18 is een ding van schoonheid (als ik dat kan zeggen zelf)-162 RGB-LED's in een circulaire configurati
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
Servo Motor Control met behulp van de Microcontroller PIC16F877A

Servo Motor Control met behulp van de Microcontroller PIC16F877A

PIC16F877A is een eenvoudig micro-controller voor de beginnersHier in project:1) hoe PIC servomotor schakelt vooruit en terug wardWanneer wij druk op een toets naar positieve 90 graden gaat, op de tweede schakelaar verplaatst het achterwaarts naar ne
Muziek afspelen van de wekker

Muziek afspelen van de wekker

Dit Instructable zal worden over het ontwerpen van een speler van de muziek van het gebruik van de verschillende bouwstenen. U zult begrijpen dat de communicatie tussen de microcontroller, geheugen, computer, LCD-display, RTC, IR RAS en de muziek bes
Paintball/ballistische Chronograph

Paintball/ballistische Chronograph

maken van een goedkope Paintball Chronograph voor minder dan $40!Een ballistische chronograaf is een apparaat dat de snelheid van een projectiel registreert. Deze bijzondere chronograaf die ik heb gemaakt is slechts getest met een paintball pistool e
WebRTC klimplant Drone - Browser gecontroleerde RC auto

WebRTC klimplant Drone - Browser gecontroleerde RC auto

Dit is een geavanceerde Instructable, die het proces beschrijft van opbouw van een drone op afstand bestuurd vanuit een browser. De drone maakt gebruik van een Android telefoon voor het streamen van video en audio terug naar de browser via WebRTC.Aan