Added wordmap and remove wordclock module.

This commit is contained in:
Matthias Mitscherlich
2023-01-19 15:49:32 +01:00
parent 7cb84d1660
commit 699b9ecce8
9 changed files with 178 additions and 372 deletions
+5 -11
View File
@@ -50,6 +50,7 @@
SemaphoreHandle_t LEDMatrix::taskSemaphore = 0;
TaskHandle_t LEDMatrix::matrixTaskHandle = NULL;
bool LEDMatrix::initialized = false;
LEDMatrix::LEDMatrix(LEDMatrix_Parameters_t* parameters)
{
@@ -70,6 +71,8 @@ LEDMatrix::LEDMatrix(LEDMatrix_Parameters_t* parameters)
// Clear the matrix initially
LEDMatrix::clear();
initialized = true;
}
bool LEDMatrix::setPixelValue(unsigned int colum, unsigned int row, bool value)
@@ -121,10 +124,6 @@ bool LEDMatrix::setPixelValue(unsigned int colum, unsigned int row, bool value)
// Update the pixel value
matrix[pixelAddress].on = value;
// Release the semaphore to trigger an matrix update
xSemaphoreGive(LEDMatrix::taskSemaphore);
}
return returnValue;
}
@@ -146,12 +145,8 @@ void LEDMatrix::clear(void)
for (int i = 0; i < numberOfPixels; i++)
{
matrix[i].on = false;
// matrix[i].red = 0;
// matrix[i].green = 0;
// matrix[i].blue = 0;
}
// Release the semaphore to trigger an matrix update
xSemaphoreGive(LEDMatrix::taskSemaphore);
}
@@ -164,7 +159,7 @@ void LEDMatrix::matrixTask(void* parameters)
while(1)
{
xSemaphoreTake(ledmatrix->taskSemaphore, 1000);
xSemaphoreTake(ledmatrix->taskSemaphore, portMAX_DELAY);
for (int i = 0; i < ledmatrix->numberOfPixels; i++)
{
@@ -182,7 +177,6 @@ void LEDMatrix::matrixTask(void* parameters)
}
}
// Re-draw the matrix every 10 seconds anyhow
rmt_transmit(*ledmatrix->parameters.rmtChannel, *ledmatrix->parameters.rmtEncoder, matrix, sizeof(matrix), ledmatrix->parameters.rmtConfig);
}
-191
View File
@@ -1,191 +0,0 @@
// --------------------------------------------------------------------------------------------------------------------
/// \file wordclock.cpp
/// \brief Description
// --------------------------------------------------------------------------------------------------------------------
//
// vbchaos software design
//
// --------------------------------------------------------------------------------------------------------------------
/// $Revision: $
/// $Author: $
/// $Date: $
// (c) 2023 vbchaos
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Include files
// --------------------------------------------------------------------------------------------------------------------
#include "wordclock.h"
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// File-scope variables
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Function declarations
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Function definitions
// --------------------------------------------------------------------------------------------------------------------
Wordclock::Wordclock(LEDMatrix* matrix)
{
Wordclock::matrix = matrix;
// Initial language set
Wordclock::language = NL;
}
void Wordclock::update(Clock::TimeStructure* time)
{
// Clear the matrix before setting a new time
matrix->clear();
if (time->prefix)
{
if (languagemaps[language].prefix.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].prefix.length; i++)
{
matrix->setPixelValue(languagemaps[language].prefix.position.x + i, languagemaps[language].prefix.position.y, true);
}
}
if (languagemaps[language].prefix_additional.length > 0)
{
// Enable Prefix addition on the matrix
for (int i = 0; i < languagemaps[language].prefix_additional.length; i++)
{
matrix->setPixelValue(languagemaps[language].prefix_additional.position.x + i, languagemaps[language].prefix_additional.position.y, true);
}
}
}
if (time->almost)
{
if (languagemaps[language].almost.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].almost.length; i++)
{
matrix->setPixelValue(languagemaps[language].almost.position.x + i, languagemaps[language].almost.position.y, true);
}
}
}
if (time->fifths == Clock::Five)
{
if (languagemaps[language].five.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].five.length; i++)
{
matrix->setPixelValue(languagemaps[language].five.position.x + i, languagemaps[language].five.position.y, true);
}
}
}
else if (time->fifths == Clock::Ten)
{
if (languagemaps[language].ten.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].ten.length; i++)
{
matrix->setPixelValue(languagemaps[language].ten.position.x + i, languagemaps[language].ten.position.y, true);
}
}
}
else if (time->fifths == Clock::Quarter)
{
if (languagemaps[language].quarter.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].quarter.length; i++)
{
matrix->setPixelValue(languagemaps[language].quarter.position.x + i, languagemaps[language].quarter.position.y, true);
}
}
}
if (time->beforeAfter == Clock::Before)
{
if (languagemaps[language].before.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].before.length; i++)
{
matrix->setPixelValue(languagemaps[language].before.position.x + i, languagemaps[language].before.position.y, true);
}
}
}
else if (time->beforeAfter == Clock::After)
{
if (languagemaps[language].after.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].after.length; i++)
{
matrix->setPixelValue(languagemaps[language].after.position.x + i, languagemaps[language].after.position.y, true);
}
}
}
if (time->half)
{
if (languagemaps[language].half.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].half.length; i++)
{
matrix->setPixelValue(languagemaps[language].half.position.x + i, languagemaps[language].half.position.y, true);
}
}
}
if ((time->hours > 0) && (time->hours < 12))
{
if (languagemaps[language].hour[time->hours - 1].length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].hour[time->hours - 1].length; i++)
{
matrix->setPixelValue(languagemaps[language].hour[time->hours - 1].position.x + i, languagemaps[language].hour[time->hours - 1].position.y, true);
}
}
}
if (time->hourPostfix)
{
if (languagemaps[language].hourPostfix.length > 0)
{
// Enable Prefix on the matrix
for (int i = 0; i < languagemaps[language].hourPostfix.length; i++)
{
matrix->setPixelValue(languagemaps[language].hourPostfix.position.x + i, languagemaps[language].hourPostfix.position.y, true);
}
}
}
}