user77175: I am working on a project for my brothers and anyone else who is interested in playing some LED Pong. I was just stuck on the software part. I don't really know what to do. But, I have an idea: I want to use the map() function to make my life easier, however, I am not sure how to use the map function with the Dot Matrix. All help would be appreciated. All of the stuff came in this kit.
Here is the test code:
#include <LedControl.h>

int DIN = 2;
int CS =  3;
int CLK = 4;

const int playerOnePin = A0;
const int playerTwoPin = A1;

int playerOneValue;
int playerOneValue2;
int playerTwoValue;
int playerTwoValue2;

LedControl lc = LedControl(DIN, CLK, CS, 0);

void setup() {

  lc.shutdown(0, false);      //The MAX72XX is in power-saving mode on startup
  lc.setIntensity(0, 15);      // Set the brightness to maximum value
  lc.clearDisplay(0);          // and clear the display

  pinMode(playerOnePin, INPUT);
  pinMode(playerTwoPin, INPUT);

}

void loop() {

  byte a[8] = {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  printByte(a);
  

}

void printByte(byte character []) {

  int i = 0;
  for (i = 0; i < 8; i++)
  {
    lc.setRow(0, i, character[i]);
  }
}

void readPot() {
  
  playerOneValue = analogRead(A0);

  playerOneValue2 = map(playerOneValue, 0, 1023, 0, 180);
}

Here is the other code:
#include <LedControl.h>

int DIN = 2;
int CS =  3;
int CLK = 4;

byte displayImage[8] =     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// considering a 2d co-ordinate system with origin (0,0) at bottom left corner
int ballX = 3; //X position
int ballY = 7; //Y position - top
int speedX = 0; // no X movement, can be -1, 0 or 1
int speedY = -1; // downward Y movement, can be -1, 0 or 1
int paddleX = 4; // X position of center of paddle - can be 1 to 6. Paddle width is 3
int score = 0;

LedControl lc = LedControl(DIN, CLK, CS, 0);

void setup() {
  pinMode (A0, INPUT);
  pinMode (A1, INPUT);
  lc.shutdown(0, false);      // Keep MAX72XX awake
  lc.setIntensity(0, 15);     // Set the brightness to maximum value
  lc.clearDisplay(0);         // and clear the display
}

void loop() {
  // update ball position
  ballX = ballX + speedX;
  ballY = ballY + speedY;

  // check for ball interaction with walls
  if (ballX == 0 || ballX == 7) {
    speedX = speedX * -1; // bouncing off walls in horizontal direction
  }

  // bouncing off ceiling
  if (ballY == 7) {
    speedY = speedY * -1; // bouncing off the ceiling
  }

  // bouncing off the paddle
  if (ballY == 0 && ballX >= (paddleX - 1) && ballX <= (paddleX + 1)) {
    speedY = speedY * -1;
    score++;    // player earns a point
  }

  // going past the paddle
  if (ballY == 0 && ballX < (paddleX - 1) && ballX > (paddleX + 1)) {
    // going past the paddle - player is out
    Serial.println(); Serial.print("Score: "); Serial.println(score);
    for (int i = 0; i < 8; i++) {
      displayImage[i] = 0x00;
    }
    displayImage[3] = 0xFF; displayImage[4] = 0xFF; // show a line
    renderByte(displayImage);
    while (1); // Freeze
  }
  // clearing the image variable
  for (int i = 0; i < 8; i++) {
    displayImage[i] = 0x00;
  }

  // generating new image
  addPixel(ballX, ballY); // adding the ball position to image
  addPixel(paddleX - 1, 0); addPixel(paddleX, 0); addPixel(paddleX + 1, 0);
  // adding paddle position to image
  renderByte(displayImage); // show the generated image

  // handling paddle control
  if (analogRead(A0) && paddleX > 0) {
    paddleX = paddleX - 1; // move paddle left
  }

  if (analogRead(A1) && paddleX < 7) {
    paddleX = paddleX + 1; // move paddle right
  }

  delay(200);
}

void addPixel(int xVal, int yVal) {
  int newRowval = 2 ^ (7 - xVal);
  int rowVal = displayImage[7 - yVal];
  displayImage[7 - yVal] = rowVal || newRowval;  // inserting a 1 at the required pixel
}

void renderByte(byte image [])
{
  int i = 0;
  for (i = 0; i < 8; i++)
  {
    lc.setRow(0, i, image[i]);
  }
}

Here is the picture of the wiring and the schematic:






user49068: First figure out the min and max values that paddleX can have.  I assume if the paddle is two dots wide then its min,max will be 0,6   Then figure out the min and max of your pot, typically 0,1023 for a a 10 bit adc.  Now to map your pot value to paddleX value you'd use the command :
paddleX = map(analogRead(A0),0,1023,0,6);

here is the map documentation : https://www.arduino.cc/reference/en/language/functions/math/map/

77175: <p>I am working on a project for my brothers and anyone else who is interested in playing some LED Pong. I was just stuck on the software part. I don't really know what to do. But, I have an idea: I want to use the map() function to make my life easier, however, I am not sure how to use the map function with the Dot Matrix. All help would be appreciated. All of the stuff came in <a href="https://rads.stackoverflow.com/amzn/click/com/B01EWNUUUA" rel="nofollow noreferrer" rel="nofollow noreferrer">this kit.</a></p>
<p>Here is the test code:</p>
<pre><code>#include &lt;LedControl.h&gt;

int DIN = 2;
int CS =  3;
int CLK = 4;

const int playerOnePin = A0;
const int playerTwoPin = A1;

int playerOneValue;
int playerOneValue2;
int playerTwoValue;
int playerTwoValue2;

LedControl lc = LedControl(DIN, CLK, CS, 0);

void setup() {

  lc.shutdown(0, false);      //The MAX72XX is in power-saving mode on startup
  lc.setIntensity(0, 15);      // Set the brightness to maximum value
  lc.clearDisplay(0);          // and clear the display

  pinMode(playerOnePin, INPUT);
  pinMode(playerTwoPin, INPUT);

}

void loop() {

  byte a[8] = {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  printByte(a);
  

}

void printByte(byte character []) {

  int i = 0;
  for (i = 0; i &lt; 8; i++)
  {
    lc.setRow(0, i, character[i]);
  }
}

void readPot() {
  
  playerOneValue = analogRead(A0);

  playerOneValue2 = map(playerOneValue, 0, 1023, 0, 180);
}
</code></pre>
<p>Here is the other code:</p>
<pre><code>#include &lt;LedControl.h&gt;

int DIN = 2;
int CS =  3;
int CLK = 4;

byte displayImage[8] =     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// considering a 2d co-ordinate system with origin (0,0) at bottom left corner
int ballX = 3; //X position
int ballY = 7; //Y position - top
int speedX = 0; // no X movement, can be -1, 0 or 1
int speedY = -1; // downward Y movement, can be -1, 0 or 1
int paddleX = 4; // X position of center of paddle - can be 1 to 6. Paddle width is 3
int score = 0;

LedControl lc = LedControl(DIN, CLK, CS, 0);

void setup() {
  pinMode (A0, INPUT);
  pinMode (A1, INPUT);
  lc.shutdown(0, false);      // Keep MAX72XX awake
  lc.setIntensity(0, 15);     // Set the brightness to maximum value
  lc.clearDisplay(0);         // and clear the display
}

void loop() {
  // update ball position
  ballX = ballX + speedX;
  ballY = ballY + speedY;

  // check for ball interaction with walls
  if (ballX == 0 || ballX == 7) {
    speedX = speedX * -1; // bouncing off walls in horizontal direction
  }

  // bouncing off ceiling
  if (ballY == 7) {
    speedY = speedY * -1; // bouncing off the ceiling
  }

  // bouncing off the paddle
  if (ballY == 0 &amp;&amp; ballX &gt;= (paddleX - 1) &amp;&amp; ballX &lt;= (paddleX + 1)) {
    speedY = speedY * -1;
    score++;    // player earns a point
  }

  // going past the paddle
  if (ballY == 0 &amp;&amp; ballX &lt; (paddleX - 1) &amp;&amp; ballX &gt; (paddleX + 1)) {
    // going past the paddle - player is out
    Serial.println(); Serial.print(&quot;Score: &quot;); Serial.println(score);
    for (int i = 0; i &lt; 8; i++) {
      displayImage[i] = 0x00;
    }
    displayImage[3] = 0xFF; displayImage[4] = 0xFF; // show a line
    renderByte(displayImage);
    while (1); // Freeze
  }
  // clearing the image variable
  for (int i = 0; i &lt; 8; i++) {
    displayImage[i] = 0x00;
  }

  // generating new image
  addPixel(ballX, ballY); // adding the ball position to image
  addPixel(paddleX - 1, 0); addPixel(paddleX, 0); addPixel(paddleX + 1, 0);
  // adding paddle position to image
  renderByte(displayImage); // show the generated image

  // handling paddle control
  if (analogRead(A0) &amp;&amp; paddleX &gt; 0) {
    paddleX = paddleX - 1; // move paddle left
  }

  if (analogRead(A1) &amp;&amp; paddleX &lt; 7) {
    paddleX = paddleX + 1; // move paddle right
  }

  delay(200);
}

void addPixel(int xVal, int yVal) {
  int newRowval = 2 ^ (7 - xVal);
  int rowVal = displayImage[7 - yVal];
  displayImage[7 - yVal] = rowVal || newRowval;  // inserting a 1 at the required pixel
}

void renderByte(byte image [])
{
  int i = 0;
  for (i = 0; i &lt; 8; i++)
  {
    lc.setRow(0, i, image[i]);
  }
}
</code></pre>
<p>Here is the picture of the wiring and the schematic:</p>
<p><a href="https://i.stack.imgur.com/NztGE.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NztGE.jpg" alt="This is the wiring picture" /></a></p>
<p><a href="https://i.stack.imgur.com/t6lbL.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/t6lbL.jpg" alt="Wiring Pic" /></a></p>
<p><a href="https://i.stack.imgur.com/LsFrd.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LsFrd.jpg" alt="Wiring Pic" /></a></p>
<p><a href="https://i.stack.imgur.com/t9nGu.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/t9nGu.jpg" alt="Wiring Pic" /></a></p>
<p><a href="https://i.stack.imgur.com/LJvnT.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LJvnT.jpg" alt="Schematic" /></a></p>
 49068: <p>First figure out the min and max values that paddleX can have.  I assume if the paddle is two dots wide then its min,max will be 0,6   Then figure out the min and max of your pot, typically 0,1023 for a a 10 bit adc.  Now to map your pot value to paddleX value you'd use the command :</p>
<pre><code>paddleX = map(analogRead(A0),0,1023,0,6);
</code></pre>
<p>here is the map documentation : <a href="https://www.arduino.cc/reference/en/language/functions/math/map/" rel="nofollow noreferrer">https://www.arduino.cc/reference/en/language/functions/math/map/</a></p>
