Flytande "LED-matris"

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Flytande "LED-matris"

Inlägg av Oltronix »

Jag har ett tag funderat bygga en flytande text för datorskärm och/alt LED-matris. Det skulle se ut som nyhets/reklamtext på husväggar. Är beskrivning förstålig? Köper man en LED-matris får man kanske med dylig SW. Eftersom jag inte vill uppfinna något som som redan finns surfade jag lite. Det jag hittade var classen QtGui.QLCDNumber(). Fint men inte riktigt vad jag önskande. Jag har tänkt bygga i python eller något weborienterat språk för presentera på websida, dynamiskt alt i eget fönster, ej websida. Man kan använda bilder av ABC..Ö som man flyttar sig i x-led med stöd av Pygame. Känns inte riktigt som rätt lösning. Är det någon som sett dyligt, lämpligt pythonbibliotek, har ideer eller synpunkter?

https://www.resume.se/nyheter/artiklar/ ... husreklam/
http://www.trafotek.se/tt.htm
http://www.leddisplay.se/produkter/tid- ... -klassisk/

Det verkar som många redan löst detta

edit:
Här är det någon som gjort nått:
https://www.linux-apps.com/p/1132152/
Tyvärr är det C++, som jag inte kan och det är inte rölig text, men kanske en början.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Flytande "LED-matris"

Inlägg av Oltronix »

Nu har jag kommit en bit längre. Fått lite hum om hur qmake o *.pro fungerar.
Dock får jag inte lika snyggt result som med HelloWorld.png, den lilla bilden som finns näst längst ner på sidan som är källfilen till den röda textmatrisen med HelloWorld!! Hur skapar man en bild som är lika skarp som HelloWorld.png?

edit
Använt Pinta för att skapa text. Det verkar som HelloWorld.png är skapad med annan typ av verktyg än Pinta
edit2
Jag fick till det till slut men jag fick sitta och editera enskilda pixlar. Det måste finnas något enklare sätt/verktyg. Även om man använder ett verktyg som skapar pixel av text så blir det inte helt distingta pixel med en färg utan ganska blurrigt. Att välja font påverkar resultatet, förståss. Ev måste man skapa egna "matrix fonter" för att det skall bli snyggt. Men det måste finns smartare verktyg så man slipper editera pixlar.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Flytande "LED-matris"

Inlägg av Oltronix »

Efter en irrfärd bland globala och lokala variabler
http://elektronikforumet.com/forum/view ... 3&start=15 så fick jag till min flytande LED-matris att fungera både i horisontal- och vertikalled. Dock var det inte helt utan nya stötestenar. Jag använde sleep()-funktionen för att få rätt hastighet i uppdatering. Det fungerade inte. Matrisen uppdaterads när min loop var helt genomlöpt och färdig med sista värdet av matrispositionen. Vid oändlig loop uppdaterades aldrig Qt-fönstret. Dock så uppdaterades debugutskriften som förväntat i terminalfönstret, varje varv i loopen ,men det hände inte i Qt-fönstret.

Jag försökte med Qt-funktionen update(). Inget hände dock inget kompilerings- eller runtimefel. Lite naivt försökte jag även med show() med samma resultat.

När jag till slut använde QTimer fick jag ett beteende som jag vill ha.

Varför är det så? Varför fungerar inte sleep() och update() i Qt-fönstret?

Koden nedan, // är första försöket. Fungerade test allt utom // och med QTimer-stuff.

Kod: Markera allt

.
.

connect(radioButton1, SIGNAL(clicked()), this, SLOT(setTest()));
.
.
incTimer = new QTimer();
connect(incTimer, SIGNAL(timeout()),this,SLOT(Increment()));
.
.
void MyWindow::setTest()
{
  using namespace std;
  for(int i=0; i < 43; ++i) {
     cout << "setTEST nr55 "<<endl;
     //setMatrix(MyWindow::matrix12, MyWindow::img1p, i);
     //sleep(2);
     cout << "setTEST After sleep "<<endl;
    // matrix12->update();
    // matrix12->show();
    // update();
     incTimer->start(200);  //200ms repetition
  }
}

void MyWindow::Increment()
{
using namespace std;
//inc=0;
//for(int i=0; i < 43; ++i) {
 setMatrix(MyWindow::matrix12, MyWindow::img1p, inc);
 inc++;
cout << "Increment() inc="<< inc <<endl;
if (inc > 43) inc=-45; 
 //}
}
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Flytande "LED-matris"

Inlägg av kodar-holger »

Windows jobbar väldigt mycket händelsestyrt. Anrop till Update resulterar bara i att ett meddelande postas i windows meddelandekö. (Egentligen en av flera köer och det händer nog lite till). Meddelandekön arbetas av ett meddelande i taget och först när din applikation släppt kontrollen. D.v.s. när nuvarande meddelandet är bearbetat så tar den nästa.

Du kan tvinga fram en avbetning av kön genom att anropa QApplication::processMessages() eller vad den nu exakt heter. Jag är hemma och sjuk så kan inte kolla dokumentationen.

När du kör med en QTimer så blir det ett meddelande varje gång timern löser ut. Mycket snyggare.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Flytande "LED-matris"

Inlägg av Oltronix »

Hm inressant. Samma i linux? Verkar så. Jag kör Ubuntu.
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Flytande "LED-matris"

Inlägg av kodar-holger »

Ja. Jag borde kanske sagt fönstersystem och inte windows. Funkade lika dant på X-windows på VMS en gång för 100 år sen.
Skriv svar