user78201: I saw a tutorial on linking a keypad using one pin, utilising several resistors:
http://razibshahdat.blogspot.com/2018/05/one-single-analog-pin-keypad-control.html
I have this keypad, a 16x2 LCD, a PIR motion detector, and a DHT11 temperature & humidity sensor attached. Furthermore, I have an additional 5V power supply connected to the breadboard for additional power, although I'm not sure if this is required?
All components work as expected in the current configuration when only loading their relevant Arduino template code, except for the keypad. The keypad worked initially when nothing else was connected, but now the resistance values fed to the serial seem to jump, particularly in the first column. I tried to add some resistance between the first input of the keypad matrix and the live wire, which dampens the fluctuations but does not remove them completely.

I have created a Fritzing sketch to try to make it a bit easier to understand, although I realise that it is still rather chaotic. I am new to Fritzing and Arduino and am still figuring things out.
Here is the isolated code for the keypad, which I am using to find the output values (which, as mentioned, are varying unpredictably), although this was working previously, on a more simple setup:
    // code adapted from: https://www.youtube.com/watch?v=W8ZSeLD90KA
    void setup() {
         Serial.begin(9600);  /* Define baud rate for serial communication */
    }
    
    void loop() {
      int keyIn;
      int keyVals [16] = {976, 450, 333, 244, 166, 138, 124, 109, 90, 81, 76, 70, 61, 57, 54, 51};
      char keys[16] = {'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'};
      int range = 1;
    
      keyIn = analogRead(A1);
    
      String temp = "";
    
      if (keyIn > 2)
      {
        Serial.print(keyIn);
        for(int i=0; i<=15; i++)
        {
          // The values of the keys changed, that's why the following is commented out
          //if (keyIn >= keyVals[i]-range && keyIn <= keyVals[i]+range)
          //{
          //  temp = keys[i];
          //}
        }
       Serial.print(temp);
       Serial.println("");
       delay(500);
    }

}
Lastly, I intend for this board to be my master. I then intend to connect a slave through I2C with a DC motor, a servo motor, and an RGB LED. Does this seem feasible?
Please assist if you can.
If you have any additional advice, that too would be highly appreciated - thank you in advance!

user68310: Your key values are:
int keyVals [16] = {976, 450, 333, 244, 166, 138, 124, 109, 90, 81, 76, 70, 61, 57, 54, 51};

The formula for the key values given in the OnewireKeypad library is:
float V = (voltage * float( R3 )) / (float(R3) + (float(R1) * float(R)) + (float(R2) * float(C)));
float Vfinal = V * ANALOG_FACTOR;

where:

voltage = 5 V
R1 = 1,000 Ω (the three horizontal ones in the schematic)
R2 = 4,700 Ω
R3 = 1,000 Ω (the pulldown to GND in the schematic)
R = row number 0 to 3
C = column number 0 to 3
ANALOG_FACTOR = 1023 / 5.0;

The keypad schematic given in the blogspot article is:

I put the formula and parameters into an Excel spreadsheet and produced this:

...which is different to your key values.
Have I misunderstood your circuit setup? Are you doing something different?

78201: <p>I saw a tutorial on linking a keypad using one pin, utilising several resistors:
<a href="http://razibshahdat.blogspot.com/2018/05/one-single-analog-pin-keypad-control.html" rel="nofollow noreferrer">http://razibshahdat.blogspot.com/2018/05/one-single-analog-pin-keypad-control.html</a></p>
<p>I have this keypad, a 16x2 LCD, a PIR motion detector, and a DHT11 temperature &amp; humidity sensor attached. Furthermore, I have an additional 5V power supply connected to the breadboard for additional power, although I'm not sure if this is required?</p>
<p>All components work as expected in the current configuration when only loading their relevant Arduino template code, except for the keypad. The keypad worked initially when nothing else was connected, but now the resistance values fed to the serial seem to jump, particularly in the first column. I tried to add some resistance between the first input of the keypad matrix and the live wire, which dampens the fluctuations but does not remove them completely.
<a href="https://i.stack.imgur.com/ngMHd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ngMHd.png" alt="![Schematic using Fritzing" /></a>
I have created a Fritzing sketch to try to make it a bit easier to understand, although I realise that it is still rather chaotic. I am new to Fritzing and Arduino and am still figuring things out.</p>
<p>Here is the isolated code for the keypad, which I am using to find the output values (which, as mentioned, are varying unpredictably), although this was working previously, on a more simple setup:</p>
<pre><code>    // code adapted from: https://www.youtube.com/watch?v=W8ZSeLD90KA
    void setup() {
         Serial.begin(9600);  /* Define baud rate for serial communication */
    }
    
    void loop() {
      int keyIn;
      int keyVals [16] = {976, 450, 333, 244, 166, 138, 124, 109, 90, 81, 76, 70, 61, 57, 54, 51};
      char keys[16] = {'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'};
      int range = 1;
    
      keyIn = analogRead(A1);
    
      String temp = &quot;&quot;;
    
      if (keyIn &gt; 2)
      {
        Serial.print(keyIn);
        for(int i=0; i&lt;=15; i++)
        {
          // The values of the keys changed, that's why the following is commented out
          //if (keyIn &gt;= keyVals[i]-range &amp;&amp; keyIn &lt;= keyVals[i]+range)
          //{
          //  temp = keys[i];
          //}
        }
       Serial.print(temp);
       Serial.println(&quot;&quot;);
       delay(500);
    }
</code></pre>
<p>}</p>
<p>Lastly, I intend for this board to be my master. I then intend to connect a slave through I2C with a DC motor, a servo motor, and an RGB LED. Does this seem feasible?</p>
<p>Please assist if you can.</p>
<p>If you have any additional advice, that too would be highly appreciated - thank you in advance!</p>
 68310: <p>Your key values are:</p>
<pre class="lang-cpp prettyprint-override"><code>int keyVals [16] = {976, 450, 333, 244, 166, 138, 124, 109, 90, 81, 76, 70, 61, 57, 54, 51};
</code></pre>
<p>The formula for the key values given in the <a href="https://github.com/AndrewMascolo/OnewireKeypad/blob/abdea336ec177d5f483a064c4d9d8577397f1c87/OnewireKeypad.h#L164" rel="nofollow noreferrer">OnewireKeypad library</a> is:</p>
<pre class="lang-cpp prettyprint-override"><code>float V = (voltage * float( R3 )) / (float(R3) + (float(R1) * float(R)) + (float(R2) * float(C)));
float Vfinal = V * ANALOG_FACTOR;
</code></pre>
<p>where:</p>
<ul>
<li>voltage = 5 V</li>
<li>R1 = 1,000 Ω (the three horizontal ones in the schematic)</li>
<li>R2 = 4,700 Ω</li>
<li>R3 = 1,000 Ω (the pulldown to GND in the schematic)</li>
<li>R = row number 0 to 3</li>
<li>C = column number 0 to 3</li>
<li>ANALOG_FACTOR = 1023 / 5.0;</li>
</ul>
<p>The keypad schematic given in the <a href="http://razibshahdat.blogspot.com/2018/05/one-single-analog-pin-keypad-control.html" rel="nofollow noreferrer">blogspot article</a> is:</p>
<p><a href="https://i.stack.imgur.com/CGYaP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CGYaP.png" alt="Onewire keypad schematic" /></a></p>
<p>I put the formula and parameters into an Excel spreadsheet and produced this:</p>
<p><a href="https://i.stack.imgur.com/tzM2O.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/tzM2O.png" alt="Excel spreadsheet of Onewire formula" /></a></p>
<p>...which is different to your key values.</p>
<p>Have I misunderstood your circuit setup? Are you doing something different?</p>
