Code werkend maken Blue-Pill

TI LaunchPad specifieke Software.
Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Code werkend maken Blue-Pill

Berichtdoor mooier » 31 Jan 2018, 23:01

Hallo Allemaal ik heb een vraag ben zindskort aan het proberen iets met arduino.
ik heb bij solderlab the software Gladiator ge download en nu probeer ik led-pixels aan te sturen .
ik heb daar een software ge download voor de arduino mega om 1028 pixels aan te kunnen sturen.
toen dacht ik als ik nu het bordje Blue-pill heb dan is het veel goedkoper in aanschaf en dezen kan zo belachelijk veel pixels aan sturen
dan laad ik de code voor arduino in het bordje STM32F103C8T6 ARM STM32 ook wel de BLUE-PILL Genoemd met een externe ft232RL print aan gesloten op de A10 en A9 heb ik usb comunicatie

nu ben ik er achter dat dit zo niet werkt en er dingen aan gepast moeten worden de code zal moeten om gebogen en aangepast moeten worden
alleen ik kan dit niet ben niet goed en net begonnen met arduino en ik hoop dat iemand mijn kan helpen AUB. om mijn blue-pill bordje werkend te krijgen
kost maar 2 dollar en je kan er veel mee is een ARM
hier de coden die voor de Arduino mega is bedoeld . en nog moet aan gepast worden voor Blue pill bordje
wie wil mijn helpen AUB Alvast bedankt .
hier de Code :

cpp code
//Arduino Mega Sketch to drive strands and matrices of WS2801 pixels with Glediator.
//(c)2012 by R. Heller
//wwww.solderlab.de

//Set Baudrate in Glediator to 1MBit !!!

//Change this to YOUR matrix size!!
#define Num_Pixels 16

//Serial Data Output (Arduino-Mega Pin 6)
#define SDO_Port PORTH
#define SDO_DDR DDRH
#define SDO_Pin 3

//Serial Data Clock (Arduino-Mega Pin 7)
#define CLK_Port PORTH
#define CLK_DDR DDRH
#define CLK_Pin 4

//############################################################################################################################################################
// Don't change anything upon here! #
//############################################################################################################################################################

#define Set_CLK_Low CLK_Port &= ~(1 << CLK_Pin)
#define Set_CLK_High CLK_Port |= (1 << CLK_Pin)
#define Set_CLK_Output CLK_DDR |= (1 << CLK_Pin)

#define Set_SDO_Low SDO_Port &= ~(1 << SDO_Pin)
#define Set_SDO_High SDO_Port |= (1 << SDO_Pin)
#define Set_SDO_Output SDO_DDR |= (1 << SDO_Pin)

#define CMD_NEW_DATA 1

unsigned char display_buffer[Num_Pixels * 3];

static unsigned char *ptr;
static unsigned int pos = 0;

volatile unsigned char go = 0;

void setup()
{
Set_SDO_Output;
Set_CLK_Output;

//Disable global interrupts
cli();

//UART Initialisation
UCSR0A |= (1<<U2X0);
UCSR0B |= (1<<RXEN0) | (1<<TXEN0) | (1<<RXCIE0);
UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00) ;
UBRR0H = 0;
UBRR0L = 1; //Baud Rate 1 MBit

ptr=display_buffer;

//Enable global interrupts
sei();
}

void loop()
{
if (go==1) {shift_out_data(); go=0;}
}

//############################################################################################################################################################
// USART-Interrupt-Prozedur (called every time one byte is compeltely received) #
//############################################################################################################################################################

ISR(USART0_RX_vect)
{
unsigned char b;

b=UDR0;

if (b == CMD_NEW_DATA) {pos=0; ptr=display_buffer; return;}
if (pos == (Num_Pixels*3)) {} else {*ptr=b; ptr++; pos++;}
if (pos == ((Num_Pixels*3)-1)) {go=1;}
}


//############################################################################################################################################################
// Shift out Data #
//############################################################################################################################################################

void shift_out_data()
{

for (int i=0; i<Num_Pixels; i++)
{
byte r = display_buffer[i*3+0];
byte g = display_buffer[i*3+1];
byte b = display_buffer[i*3+2];

for (byte j=0; j<8; j++)
{
Set_CLK_Low;
if (r & (1<<(7-j))) {Set_SDO_High;} else {Set_SDO_Low;}
Set_CLK_High;
}

for (byte j=0; j<8; j++)
{
Set_CLK_Low;
if (g & (1<<(7-j))) {Set_SDO_High;} else {Set_SDO_Low;}
Set_CLK_High;
}

for (byte j=0; j<8; j++)
{
Set_CLK_Low;
if (b & (byte)(1<<(7-j))) {Set_SDO_High;} else {Set_SDO_Low;}
Set_CLK_High;
}
}

Set_CLK_Low;
delayMicroseconds(800); //Latch Data

}

//############################################################################################################################################################
//############################################################################################################################################################
//############################################################################################################################################################

Advertisement

Gebruikers-avatar
Berichten: 1794
Geregistreerd: 06 Aug 2016, 01:03

Re: Code werkend maken Blue-Pill

Berichtdoor Koepel » 01 Feb 2018, 01:01

Andersom.

Je hoort het andersom te doen. Je begint met iets dat gaat werken. Als dat eenmaal werkt en je leert er mee om te gaan, dan pas ga je alles ondersteboven gooien om iets te maken dat misschien niet gaat werken.

Een Arduino Mega 2560 kost minder dan 9 euro: https://www.aliexpress.com/item/1PCS-Mega2560-R3-ATmega2560-16AU-Mega2560-REV3-for-Arduino-Compatible-no-logo/32830645572.html

Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Re: Code werkend maken Blue-Pill

Berichtdoor mooier » 01 Feb 2018, 01:28

de code die er staat werkt gewoon op een arduino mega . het bordje wat ik wil proberen is de STM32F103C8T6 en die krijg ik niet om
mischien mensen evaring met de STM32F103C8T6
die me een idee geven dezen heeft ook al 3 uarts

Gebruikers-avatar
Berichten: 1794
Geregistreerd: 06 Aug 2016, 01:03

Re: Code werkend maken Blue-Pill

Berichtdoor Koepel » 01 Feb 2018, 10:44

Heb je het zelf al werkend met een Arduino Mega 2560 board ?
Wat zou je dan nog meer willen ?

Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Re: Code werkend maken Blue-Pill

Berichtdoor mooier » 02 Feb 2018, 19:28

ja dat werkt gewoon . maar maximaal 1028 pixels
ik wil proberen het in de (blue pill) bordje kleiner en kosten een fractie van de mega Euro 1.80
is nogal een verschil is ook gewoon te programmeren met arduino software plugiung downloaden en instaleren

ik ben er wel mee bezeg alleen ik krijg steeds meldingen die niet oke zijn zo als de uart is niet oke en
dacht is wel handig 1 kleiner en goedkoper en kan veel en veel meer pixels is een STM32F103C8T6 ARM
maar ik weet niet waar ik moet klijken om de juiste codes toe te passen waar kan ik dat vinden voor de STM32F103C8T6
of iemand die me op weg kan helpen ik kan ook niet zo goed progen van daar dat ik hoop dat iemand mijn kan helpen .
ik had wel al gekeeken naar poorten en die en andere naam gegeven en uart 1 inplaats van 0 . maar ik kom er niet uit wie kan mijn op weg helpen

alvast bedankt
met vriendelijke groet

Gebruikers-avatar
Berichten: 1794
Geregistreerd: 06 Aug 2016, 01:03

Re: Code werkend maken Blue-Pill

Berichtdoor Koepel » 02 Feb 2018, 23:41

Zie al deze dingen: PORTH, DDRH, UCSR0A, UCSZ01, UDR0 ?
Dat zijn registers van de ATmega2560 chip. Die chip is van de Atmel AVR ATmega family.

Om het naar een ander platform om te bouwen, kun je die vertalen naar normale Arduino functies. Bijvoorbeeld Serial.read(), en digitalWrite() en zo. Dan wordt het op de Mega 2560 misschien 40 keer langzamer. Dan die code (met de normale Arduino functies) op de STM32 chip gebruiken, en dan wordt het misschien 30 keer sneller.

Het direct naar een register schrijven is voor veel dingen al uitgezocht in de OneWire library.
Direct io: https://github.com/PaulStoffregen/OneWire/blob/master/util/OneWire_direct_gpio.h
Ik denk dat je pech hebt, ik zie hem er niet bij staan.
Je maakt meer kans met een Arduino Zero of de Arduino Due.
Dan zou ik voor de seriele poort wel de gewone Arduino functies gebruiken. Die boardjes hebben een USB CDC seriële poort in de processor. Dan wordt de baudrate niet echt gebruikt, en gaat het met hoge snelheid over de USB verbinding.

Ik kan bij solderlab (http://www.solderlab.de/) niet vinden voor welke boardjes ze code hebben gemaakt.

De enige serieuze mogelijkheid die ik kan vinden is met FastLED.
De FastLED library (https://github.com/FastLED/FastLED) lijkt al wel code voor de STM32 te hebben. Al lijkt dat nog niet in de documentatie genoemd te worden. Er is zelfs een voorbeeld voor de Glediator: https://github.com/marmilicious/FastLED_examples/blob/master/Glediator_test1.ino.
Hoe je dat op de Blue-Pill kunt krijgen, dat weet ik niet.

De datasheet van de WS2801 vind ik verwarrend. Er staat dat de clock 25MHz mag zijn, en de datarate 2.5kHz. Dus ik weet niet hoeveel sneller de clock kan.

Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Re: Code werkend maken Blue-Pill

Berichtdoor mooier » 03 Feb 2018, 00:01

oke dankje wel voor de info.

bij solderlab zie je onder downloads en dan gladiator daar naar beneden en daar staan een aantal codes voor arduino mega 1028 pixeld alle 8 bit bordjes van arduino
daar staan ze .
verder bedankt voor de info ik ga eens proberen te stoeien

bedankt .
als er nog meer mensen een idee hebben graag

Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Re: Code werkend maken Blue-Pill

Berichtdoor mooier » 09 Feb 2018, 00:23

ik heb het op gegeven kom er verder niet uit .
is het mogenlijk dat de Arduino Mega meer dan 1028 pixels aan stuurd met die werkende code voor die arduino mega
kan iemand me dan hier mee helpen aub alvast bedankt

Gebruikers-avatar
Berichten: 1794
Geregistreerd: 06 Aug 2016, 01:03

Re: Code werkend maken Blue-Pill

Berichtdoor Koepel » 09 Feb 2018, 19:16

Kun je een Arduino sketch naar de Blue-Pill uploaden ?
Heb je die FastLED library er werkend op gekregen ?
En lukte vervolgens die sketch voor Glediator ?

De Arduino Mega 2560 heeft nog wel wat ram ruimte voor een iets groter array. Het kan misschien nog iets sneller, maar niet veel sneller. Waardoor is dat board eigenlijk beperkt tot 1028 ?

Berichten: 7
Geregistreerd: 11 Jan 2018, 16:00

Re: Code werkend maken Blue-Pill

Berichtdoor mooier » 12 Feb 2018, 02:14

ik heb het gewoon draaiend op de Mega maar wilde het groter krijgen .
dus de mega gaat niet echt groter .
ik heb gezocht op Teensy 3.2 dezen kan 8800 pixels maximaal aan storen . en met de code octoWS2811 prog je de ws2811
maar daar komt het weer ik weet niet hoe ik dat moet progen. ik kan wel en timer en een ledje aan ewn uit laten knipperen complexedr luct mijn gewoon niet

gaat me te ver . je kan ook niet iets kanteklaar met een tensy bordje kopen zo dat er al een programma in zit .
weg mijn vraag wie kan me helpen dan aan een code voor de Teensy om dezen te laten werken met Gladiator en of Jinx
alvast bedankt

Volgende

Terug naar Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast