12

There's one important thing that you need to remember when working with time on an Arudino of any form: Every operation takes time. Your foo() function will take an amount of time. What that time is, we cannot say. The most reliable way of dealing with time is to only rely on the time for triggering, not for working out when the next triggering should be....


9

This line: if (legThreeBrightness = 255){ assigns the value 255 to legThreeBrightness. That is non-zero so it enters the block and runs the fade now that the variable has been set to 255. If you just want to compare the value to 255 then use: if (legThreeBrightness == 255){ and that way when the loop function repeats it isn't there setting the value back ...


7

In C you can not use quotation marks inside quotation marks (thus nested). Replace message2 += " <meta name="viewport" content="width=device-width, initial-scale=1">"; to message2 += " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"; By using the escape character \ it means that \" is a character (") instead of ...


7

Important information: Wire.write() does NOT send anything over the I2C lines. It just puts the data into the libraries internal buffer. The actual transmission is then done by Wire.endTransmission(). I2C is packaged transmission protocol. That means, that the transmission is done in confined data packages. In your master code you are calling Wire.write() ...


6

change >= and <= to > and < respectively. You want it to stop at 0, but your do-while will do another round, since 0>=0 is true. So your code only stops at -1 and 256. When legThreeBrightness is 256 it should be counting down, but your if (legThreeBrightness == 255){ doesn't detect this, so the code will continue counting up. I'd probably ...


6

The code you linked to measures the 1.1 V internal reference using Vcc as a reference. The ATtiny13A cannot do that. It does have a 1.1 V internal reference, but it can only use it as a reference for the ADC, not as a measured channel. What you can do, if you don't mind adding extra hardware, is divide Vcc with some resistors in order to get a voltage ...


5

The Arduino IDE, rather annoyingly, tries to "help" you by generating function prototypes for functions, something it sometimes fails to do. You can make your code compile by adding one yourself: typedef struct { int x1; } x; x *a; x *f(void) { return a; } typedef struct { int y1; } y; y *b; y *g(void); // <------------------ ...


5

By using delay() it blocks the rest of the code. The programme needs to keep track of two buttons and update the lightshow at appropriate times, therefore a non-blocking style of coding is needed similar to the Blink Without Delay example where the delay() is replaced with a timer using millis() that is checked periodically. This allows other things to be ...


4

You can't add a string literal and a number together. Instead you either have to convert one or both into a format that can be joined, or just treat them as separate entities. The simplest way is: Serial.print(F("The Conductivity Is: ")); Serial.println(voltage). Note the use of F(...) around the string literal - that forces it to stay in Flash so it ...


4

Cited comment: Check pin modes. Should be INPUT_PULLUP and OUTPUT. Also, consider debouncing. – Mikael Patel Please, try: const char keymap[4][4]={ {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; const int rpin[]={9,8,7,6}; const int cpin[]={5,4,3,2}; void setup() { Serial.begin(9600); Serial.println("Program ...


4

Michael's answer was good, as usual. Let me give you some more background though: In C/C++ (And in most modern languages) variables have a "scope", or an area where they are defined. Global scope: Variables declared at the top level of your program have global scope, and exist for the life of your program. These variables are usually created on the .data ...


4

The quickest way possible from LightON to LightOFF is simply servo1.write(lightOFF); without loops or delays, in one go; no need to do it degree by degree. For example: int lightON = 180; int lightOFF = 90; for (pos1 = lightOFF; pos1 <= lightON; pos1++) { servo1.write(pos1); delay(15); } servo1.write(lightOFF); If you want it to move a few degrees ...


4

You can try implementing a counter system in your Arduino program. For example, if this is your loop() function: void loop(){ int buttonState = digitalRead(1); // Give the variable buttonState the value of pin 1, or whatever your button is connected to static int counter{}; // Have a counter variable. Static means it doesn't reset to 0 after loop() restarts ...


4

Charlieplexing code doesn't reset the state of unused pin and if the port value is HIGH + mode INPUT, it means the pull-up is enabled. Solution is reset all pins to LOW before code starts changing directions. And the last step would be setting correct pin to HIGH. If you want to do it in single loop, you might observe really short pulses (it might or might ...


3

1-) Isn't int mySensVals[6] = {2, 4, -8, 3, 2}; wrong? I count 5 elements. No, not wrong at all. There are 6 elements (as the definition says), and the first five are set to 2, 4, -8, 3 and 2. The sixth is undefined. 2-) Isn't char message[6] = "hello"; is wrong as well? I count 5 elements. No. There are 6 there. To quote your quote: Note that when ...


3

I suggest you to modify the following lines of code to check which reading has issue. if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; }


3

That piece of "code" is, I am afraid to say, complete gibberish. Passed through Artistic Style to reformat it ends up with: { int index; pinMode(10, INPUT); //button input int checkInput(); if (digitalRead(10) == 0) { return 1; else { return 0; } } Starting from the top of the program the errors ...


3

It has nothing to do with the retun statements. You have to close each { with a }. you are missing one. { int index; pinMode(10, INPUT); //button input int checkInput(); if (digitalRead(10) == 0) { return 1;} else{ return 0; } }


3

The first step with combining any programs together is to forget about combining programs together. Instead you need to do something completely different. Analyse the existing programs individually. Work out and learn exactly how they work and how they do what they do. Then think about your program. What do you actually want it to do, and how does that ...


3

You can use arrays to hold sets of row pin numbers or column pin numbers, which then allows use of for loops for pinMode() settings and for testing LEDs one after another, as shown in code below. Note, using enum { ... }; for integer-constant declarations is slightly more compact than a series of const int statements. When a constant name in an enum does ...


3

As Edgar Bonet pointed out, “chosenColor = 3 means 'let chosenColor take the value 3'”. That is, your potVal = analogRead(pot); chosenColor = map(potVal, 0, 1023, 1, 3); sequence may very well be working, but by the time you get to Serial.println(chosenColor); you have changed chosenColor to 3. First, the statement if(chosenColor = 1) {...} changes ...


3

Assuming you wiring is correct, the only mistake I could see is that your variable named "getting" used in switch is inside the if, and it should be at least in the same level of switch. Also, your resume needs to be inside the if. #include <IRremote.h> int RECV_PIN = 3; int green = 11; int blue = 12; int red = 13; #define code1 16582903 // Must ...


3

You can test it easily by calling the function twice directly after each other. If the first time a true is returned and the second time a false, the state is internally reset. But probably because after you call the fell function, the internal state is reset, so after the call not a new fell has been happened. So store the return value of the fell and ...


3

https://github.com/thomasfredericks/Bounce2/wiki I'm not familiar with the Bounce(2) library, but looking at the above site, it looks like "fell" is more of an "instant" thing, where it isn't something that maintains state over the Arduino loop. Seeing as we are human, we can't (normally) push buttons at the same exact time. This means that we would ...


3

The errors are self-explanatory. You just have to read them carefully. ‘B54A3AC5’ was not declared in this scope The compiler doesn't know what "B54A3AC5" means. Nor do I, but I gess you may mean an hexadecimal 32-bit value. If that's the case, write it with the prefix "0x", as in 0xb54a3ac5. ‘redpin’ was not declared in this scope Same thing, it ...


3

When you put the type there, you are creating new variables. SO in your constructor: MKSStepperMotors(int dirPin, int stepPin, int enablePin) { int _dirPin = dirPin; int _stepPin = stepPin; int _enablePin = enablePin; You start by creating three new variables with the same names as the member variables defined in the class. Throughout ...


3

Serial.read() is going to give you ASCII codes. So when you send 1 from the serial monitor the Arduino receives 49. Note that the ASCII code for a digit is the same as the digit plus 48, so that sets bits 4 and 5 high. You can use Serial.read() - '0' to get the actual number from the ascii code.


3

Found a possible solution. I was facing with the same problem. Apparently this is a hardware stack overflow watch dog preventing malfunction. This may not apply to every possible scenario but I discovered that the allocated pin number on the board itself is incorrect. What is numbered 03 is in fact D15 for example. So assigning the pin to D15 worked but 3 ...


Only top voted, non community-wiki answers of a minimum length are eligible