Ryerson MEC830 Mechbot aangepaste seriële communicatie (3 / 4 stap)

Stap 3: Algoritme voor het ontvangen en verzenden van gegevens

Om het verzenden van gegevens, ik heb twee functies voor het uitvoeren van dit proces, ze zijn: send_data(int num) en completion_Scan().

Ik heb variabelen toegewezen met de code die overeenkomt met de tabel voor de eerste 2 scenario's genaamd links en rechts. Voor dit voorbeeld zullen we ons alleen richten op communiceren dat de bal aan de linker- of rechterzijde is. Wanneer de locatie van de bal is vastgesteld, wordt de waarde verzonden aan de functie send_data waar het gehele getal is opgesplitst in een matrix en de waarden gepulseerde high(1) of low(0). Wanneer alle waarden zijn gepulseerde, de completion_Scan() functie heet en alleen wordt afgesloten wanneer een voltooiing-signaal wordt verzonden vanuit de oorspronkelijke Arduino die het bericht heeft ontvangen.

Pseudocode:

 int right=10100; int left = 10010; if (ball is on left side){ send_data(right); completion_Scan(); } if (ball is on the right side){ send_data(left); completion_Scan(); } 

Wanneer send_Data wordt aangeroepen, wordt het gehele getal doorgegeven gehakt in een 5 bit array met behulp van de volgende algoritme:

 int send_data(int num){ data[4] = num % 10; data[3] = (num % 100 - data[4])/10; data[2] = (num % 1000 - data[3] - data[4])/100; data[1] = (num % 10000 - data[2] - data[3] - data[4])/1000; data[0] = (num % 100000 - data[1] - data[2] - data[3] - data[4])/10000; 

Met behulp van de modulo functie, die ik heb gemaakt een algoritme voor het opslaan van de individuele bits in een unieke matrixpositie gegevens genoemd. Bijvoorbeeld, als 10100 wordt verzonden naar send_data, dan is gegevens [4] zal slaan de rest van 10100 gedeeld door 10.

gegevens [4] = (10100 mod 10) = 0;

gegevens [3] = ((10100 mod 100) - 0) / 10 = 0

gegevens [2] = 1

gegevens [1] = 0

gegevens [0] = 1

De volledige data array wordt verwerkt via een "for"-instructie, en wanneer een waarde van 1 wordt gedetecteerd, een hoog signaal via de draad is gepulseerde voor 200ms. Omgekeerd, wanneer een waarde van 0 wordt gedetecteerd, een laag signaal is gepulseerde via de draad voor de zelfde hoeveelheid tijd.

 for (y=0; y<5; y++){ //send high or low if (data[y]==1){ turn PC5 HIGH } else{ turn PC5 LOW } delay(200); } 

Om te ontvangen gegevens, is de ontvangende Arduino altijd wachten op een eerste hoge signaal. Onmiddellijk nadat het is gedetecteerd, wordt het bericht dat wordt verzonden in een array op een vergelijkbare manier opgeslagen. De definitieve code ontvangen wordt vervolgens vergeleken om te bepalen van de gewenste output.

Ik heb de volledige code opgenomen voor zowel Mechbot als EVShield. Het enige verschil is dat heb ik ook een Serial.prints voor foutopsporing, drukknoppen wilt verzenden of beëindigen van de communicatie, en een LED knipperen tijdens de verzending. Opmerking: u kunt beide bestanden downloaden of klik met de rechtermuisknop en selecteer "openen in nieuw tabblad" om de code weer te geven.

Gerelateerde Artikelen

Seriële communicatie tussen Arduino, HTML & Chrome

Seriële communicatie tussen Arduino, HTML & Chrome

Werken met Arduino is gemakkelijk, maar meer programmering vaardigheden maken project waarbij software vereist. In tegenstelling tot andere oplossingen is mijn project de manier om HTML-codes maken off line app - zonder dingen zoals Yun, Ethernet-shi
Raspberry PI USB vs seriële communicatie met gsm schild (itbrainpower.net a-gsm schild)

Raspberry PI USB vs seriële communicatie met gsm schild (itbrainpower.net a-gsm schild)

Over deze hoeDeze hoe verwijst naar de itbrainpower.net a-gsm schild, hebben volgende belangrijkste kenmerken:Wereldwijde compatibiliteit - quad band moduleGSM / GPRS / SMS / DTMF ondersteundTwee SIM-sockets (single SIM actief)keuzelijst met geïntegr
Seriële communicatie met Arduino

Seriële communicatie met Arduino

Bron: http://www.theorycircuit.com/serial-communication-with-arduino/Hier dit project toont hoe te communiceren met arduino seriële terminal? We hebben vier LED's om aan te geven richting gekozen voor een toepassing.In een brood bord worden vier LED'
Raspberry Pi - Arduino seriële communicatie

Raspberry Pi - Arduino seriële communicatie

In dit project, zullen wij een mededeling tussen de Arduino en Raspberry Pi, waarbij essentiële informatie wordt overgedragen door het sturen van gegevens één bit tegelijk maken.Seriële communicatie is essentieel voor elke Micro-controllers voor de c
Seriële communicatie - Arduino en Linkit One

Seriële communicatie - Arduino en Linkit One

In dit instructable ga ik u tonen hoe om de seriële communicatie tussen de arduino en de Linkit One. Dit zou u helpen om een meer complexe project met deze twee planken.Stap 1: onderdelenHier is een lijst van alle onderdelen die nodig zijn om aan de
Arduino en Matlab: laat ze praten met behulp van seriële communicatie!

Arduino en Matlab: laat ze praten met behulp van seriële communicatie!

Hallo iedereen!Sinds toen heb ik begon te spelen met de Arduino, heb ik altijd geweest zwerven hoe ik kon maken het praten en communiceren met de Matlab-omgeving op een gemakkelijke en effectieve manier. Ik botste tegen vele Instructables en tutorial
Deeltje Photon en Linkit één seriële communicatie

Deeltje Photon en Linkit één seriële communicatie

De Linkit een is een grote boord en het beste deel van het is het is draagbaar en draagbare wordt het, is geweldig om het ontwerpen van draagbare apparaten met behulp van de micro-controller. Een andere koele microcontroller die ik werk met is het fo
MSP430 Verwerking seriële communicatie met behulp van ENERGIA en

MSP430 Verwerking seriële communicatie met behulp van ENERGIA en

Hallo iedereen. Ik ben vigneshraja. hier ik gedaan de variëren de kleur afhankelijk van de analoge waarde van 10 k leest potentiometer met MSP430G2231. Ik ben met behulp van Energia software voor seriële communicatieprogramma. Ik gebruik voor de kleu
Arduino verwerking: seriële communicatie zonder Firmata

Arduino verwerking: seriële communicatie zonder Firmata

dit Instructable is bedoeld voor iedereen direct verzenden invoerwaarden gelezen door Arduino voor verwerking. Is het meest geschikt voor het doorgeven van één tot meerdere waarden bevatten, zoals een paar knoppen, een joystick of versnellingsmeter. 
Minder seriële communicatie draad

Minder seriële communicatie draad

Dit project is voor een communicatie-protocollen. ITCJ.Stap 1: beschrijvingDit project bevat informatie over het uitvoeren van een seriële communicatie tussen twee micro controllers met behulp van een infrarood sensor, draadloze communicatie.Stap 2:
Kleur sensoren en Arduino seriële communicatie voor beginners

Kleur sensoren en Arduino seriële communicatie voor beginners

Hallo allemaal, ik ga om te praten over kleur sensoren: hoe te bouwen en een kalibreren en hoe het te gebruiken met seriële communicatie via een Arduino board.De laatste stap wordt uitgelegd hoe ik gebruikte dit project voor een Gimp (staat voor "GNU
Seriële communicatie tussen android en arduino via laptop bluetooth

Seriële communicatie tussen android en arduino via laptop bluetooth

Over:Dit instructable is over seriële communicatie tussen android en arduino via laptop ingebouwde Bluetooth. Ik heb geen aparte Bluetooth module. dus ik besloten heb om mijn laptop ingebouwde te gebruiken Bluetooth voor seriële communicatie.Stap 1:
NUC140 Seriële communicatie

NUC140 Seriële communicatie

In dit project, zullen wij een mededeling tussen de Arduino en Nuvoton NUC140, waarbij essentiële informatie wordt overgedragen door het sturen van gegevens één bit tegelijk maken.Seriële communicatie is essentieel voor elke Micro-controllers voor de
ATtiny85 & ATtiny84 analoge Pins seriële communicatie, etc.

ATtiny85 & ATtiny84 analoge Pins seriële communicatie, etc.

ik met behulp van een ATtiny84 of een ATtiny85 op mijn projecten. Ze kunnen besparen een paar centen en het ontwerp een beetje kleiner te maken. De beste instructie voor de oprichting van deze chips te gebruiken met de Arduino IDE is op de website va