The term digital signal can be used to describe a wide range of signal types. But in this guide we are going to use a very simple definition for a digital signal - a signal which has only two values. Such a signal would look something like this:
The two values could be anything. However, since we are dealing with an electrical signal, we will be dealing with an electrical value - voltage. But what are the two values for the voltage?
Typically, 0V is used for one of them and is referred to as "LOW". The other one is referred to as "HIGH" and its voltage depends on the hardware, but some common values you'll see are 5V (ex: Arduino Uno) and 3.3V (ex: Circuit Playground).
Let's focus on the 3.3V logic used by the Circuit Playground. Quite often this is just referred to as "three volt logic" as we're all too lazy to mention that extra "point three".
So.....what about 3.2999V? It's not 3.3V, so is it HIGH? Is it LOW? Or what about 0.1V? It's not 0V, so it it LOW? Is it HIGH? Real world signals will have some noise and thus will behave this way. Therefore, to deal with this, a range of values is setup to represent HIGH and LOW. For 3.3V level logic, it looks like this:
So 3.2999V would be seen as HIGH and 0.1V would be seen as LOW. Everything that is designed to work with 3.3V logic is expected to work within these limits. If it doesn't, it is considered broken. Nothing should be generating values in the "gray zone".