Exit status 1: please help

hello, i just started a iron man mask build from box and loop, and i used a arduino nano every, but when i went to compile and upload the code, i get this error message:

failed uploading: upload error: exit status 1

this is the code:

#include "ServoEasing.hpp" 
ServoEasing servoTop; 
ServoEasing servoBottom; 
 
const int action_pin = 2; int location = 31;  

int bottom_closed = 107; int top_closed = 167; int bottom_open = 20;  int top_open = 20; 
 
void setup()  
{ 
  pinMode(action_pin, INPUT_PULLUP);   servoTop.attach(9);   servoBottom.attach(10);   setSpeedForAllServos(190);   servoTop.setEasingType(EASE_CUBIC_IN_OUT);   servoBottom.setEasingType(EASE_CUBIC_IN_OUT);   synchronizeAllServosStartAndWaitForAllServosToStop(); 
 } 
 
void loop()  
{ 
  int proximity = digitalRead(action_pin);   if (proximity == LOW) 
  { 
    if (location > bottom_open) {       servoTop.setEaseTo(top_open);       servoBottom.setEaseTo(bottom_open);        synchronizeAllServosStartAndWaitForAllServosToStop();       location = bottom_open;       delay(600);  
    } else { 
      servoTop.setEaseTo(top_closed);        servoBottom.setEaseTo(bottom_closed);        synchronizeAllServosStartAndWaitForAllServosToStop();        location = bottom_closed;       delay(600); 
    }   }  
}

Where is this function?

EDIT: never mind, it's part of library I'm not familiar with

Have you managed to get any example sketches working with your hardware?

/*
 * TwoServos.cpp
 *
 *  Shows smooth movement from one servo position to another for 2 servos synchronously.
 *  It operates the first servo from -90 to +90 degree using setTrim(90).
 *  This example uses the LightweightServo library. This saves 640 bytes program memory compared to using Arduino Servo library.
 *
 *  Copyright (C) 2019-2024  Armin Joachimsmeyer
 *  armin.joachimsmeyer@gmail.com
 *
 *  This file is part of ServoEasing https://github.com/ArminJo/ServoEasing.
 *
 *  ServoEasing is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See the GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program. If not, see <http://www.gnu.org/licenses/gpl.html>.
 */

#include <Arduino.h>

// Must specify this before the include of "ServoEasing.hpp"
//#define USE_PCA9685_SERVO_EXPANDER    // Activating this enables the use of the PCA9685 I2C expander chip/board.
//#define USE_SERVO_LIB                 // If USE_PCA9685_SERVO_EXPANDER is defined, Activating this enables force additional using of regular servo library.
#define USE_LIGHTWEIGHT_SERVO_LIBRARY   // Makes the servo pulse generating immune to other libraries blocking interrupts for a longer time like SoftwareSerial, Adafruit_NeoPixel and DmxSimple.
//#define PROVIDE_ONLY_LINEAR_MOVEMENT  // Activating this disables all but LINEAR movement. Saves up to 1540 bytes program memory.
#define DISABLE_COMPLEX_FUNCTIONS     // Activating this disables the SINE, CIRCULAR, BACK, ELASTIC, BOUNCE and PRECISION easings. Saves up to 1850 bytes program memory.
//#define DISABLE_MICROS_AS_DEGREE_PARAMETER // Activating this disables microsecond values as (target angle) parameter. Saves 128 bytes program memory.
#define ENABLE_MIN_AND_MAX_CONSTRAINTS     // Activating this enables constraint checking. Requires 4 bytes RAM per servo and 36 bytes program memory.
//#define DISABLE_PAUSE_RESUME               // Activating this disables pause and resume functions. Saves 5 bytes RAM per servo.

//#define MAX_EASING_SERVOS 2

//#define TRACE
//#define DEBUG                              // Activating this enables generate lots of lovely debug output for this library.
//#define PRINT_FOR_SERIAL_PLOTTER           // Activating this enables generate the Arduino plotter output from ServoEasing.hpp.

#include "ServoEasing.hpp"
#include "PinDefinitionsAndMore.h"

/*
 * Pin mapping table for different platforms - used by all examples
 *
 * Platform         Servo1      Servo2      Servo3      Analog     Core/Pin schema
 * -------------------------------------------------------------------------------
 * (Mega)AVR + SAMD    9          10          11          A0
 * 2560               46          45          44          A0
 * ATtiny3217         20|PA3       0|PA4       1|PA5       2|PA6   MegaTinyCore
 * ESP8266            14|D5       12|D6       13|D7        0
 * ESP32               5          18          19          A0
 * BluePill          PB7         PB8         PB9         PA0
 * APOLLO3            11          12          13          A3
 * RP2040             6|GPIO18     7|GPIO19    8|GPIO20
 */

ServoEasing Servo1;
ServoEasing Servo2;

#define START_DEGREE_VALUE  0 // The degree value written to the servo at time of attach.
#define DELAY_BETWEEN_ACTIONS_MILLIS    1000

void blinkLED();

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
    Serial.begin(115200);

#if defined(__AVR_ATmega32U4__) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /*stm32duino*/|| defined(USBCON) /*STM32_stm32*/ \
    || defined(SERIALUSB_PID)  || defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_attiny3217)
    delay(4000); // To be able to connect Serial monitor after reset or power up and before first print out. Do not wait for an attached Serial Monitor!
#endif
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    // Just to know which program is running on my Arduino
    Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_SERVO_EASING));

    /************************************************************
     * Attach servo to pin and set servos to start position.
     * This is the position where the movement starts.
     *
     * The order of the attach() determine the position
     * of the Servos in internal ServoEasing::ServoEasingArray[]
     * and ServoEasing::ServoEasingNextPositionArray[]
     ***********************************************************/
    Serial.println(F("Attach servo at pin " STR(SERVO1_PIN)));
#endif
    /*
     * Operate Servo1 from -90 to +90 degree
     * Instead of specifying a trim you can use:
     *    Servo1.attach(SERVO1_PIN, START_DEGREE_VALUE, DEFAULT_MICROSECONDS_FOR_0_DEGREE, DEFAULT_MICROSECONDS_FOR_180_DEGREE, -90, 90);
     */
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    Serial.println(F("Operate servo 1 from -90 to + 90 degree by using attachWithTrim()"));
#endif
    Servo1.attachWithTrim(SERVO1_PIN, 90, START_DEGREE_VALUE - 90, DEFAULT_MICROSECONDS_FOR_0_DEGREE,
    DEFAULT_MICROSECONDS_FOR_180_DEGREE);
    // alternative way to get the same result
//    Servo1.attach(SERVO1_PIN, START_DEGREE_VALUE, DEFAULT_MICROSECONDS_FOR_0_DEGREE, DEFAULT_MICROSECONDS_FOR_180_DEGREE, -90, 90);

#if defined(ENABLE_MIN_AND_MAX_CONSTRAINTS)
    /*
     * Just for demonstration of constraint usage, especially for servo with trim
     */
    Servo1.setMinMaxConstraint(-50, +50);
#endif

#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    /*
     * Check at least the last call to attach()
     */
    Serial.println(F("Attach servo at pin " STR(SERVO2_PIN)));
#endif
    if (Servo2.attach(SERVO2_PIN, START_DEGREE_VALUE, DEFAULT_MICROSECONDS_FOR_0_DEGREE,
    DEFAULT_MICROSECONDS_FOR_180_DEGREE) == INVALID_SERVO) {
        Serial.println(F("Error attaching servo"));
        while (true) {
            blinkLED();
        }
    }

#if defined(PRINT_FOR_SERIAL_PLOTTER)
    // Print legend for Plotter
    Serial.println("Servo1[us], Servo2[us]");
#endif
    setSpeedForAllServos(30);

#if defined(DEBUG)
    Servo1.printStatic(&Serial);
    Servo2.printStatic(&Serial);
#endif

    // Just wait for servos to reach position.
    delay(DELAY_BETWEEN_ACTIONS_MILLIS);
}

void blinkLED() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
}

void loop() {

    /*
     * Move both servos blocking
     */
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    Serial.println(F("Move to 0/90 degree with 30 degree per second blocking"));
#endif
    setSpeedForAllServos(30);
    Servo1.setEaseTo(0.0f); // Use x.y with trailing f (to specify a floating point constant) to avoid compiler errors.
    Servo2.setEaseTo(90.0f);
    synchronizeAllServosStartAndWaitForAllServosToStop();

    /*
     * Now continue faster.
     */
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    Serial.println(F("Move to 90/180 degree with up to 60 degree per second using interrupts"));
#endif
    Servo1.setEaseTo(90.0f, 60);
    /*
     * An alternative method to synchronize and start
     * Synchronize by simply using the same duration
     */
    Servo2.startEaseToD(180, Servo1.mMillisForCompleteMove); // This starts interrupt for all servos
    /*
     * Now you can run your program while the servos are moving.
     * Just let the LED blink until servos stop.
     */
    while (ServoEasing::areInterruptsActive()) {
        // Here you can insert your own code
        blinkLED();
    }

    /*
     * Move servo1 using cubic easing. Use interrupts for update.
     *  The first servo moves with the specified speed.
     *  The second will be synchronized to slower speed (longer duration, than specified) because it has to move only 80 degree.
     */
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    Serial.println(F("Move to 0/90 degree with up to 90 degree per second using interrupts. Use cubic easing for first servo."));
#endif
    Servo1.setEasingType(EASE_CUBIC_IN_OUT);
    /*
     * Another method to specify moves
     * Use the ServoEasingNextPositionArray and then call the appropriate function
     */
    ServoEasing::ServoEasingNextPositionArray[0] = 0.0f;
    ServoEasing::ServoEasingNextPositionArray[1] = 90.0f;
    setEaseToForAllServosSynchronizeAndStartInterrupt(90); // Set speed and start interrupt here, we check the end with areInterruptsActive()

    // Call yield for the ESP boards must be handled in areInterruptsActive()
    while (ServoEasing::areInterruptsActive()) {
        ; // Here you can insert your own code
    }

    delay(DELAY_BETWEEN_ACTIONS_MILLIS);

    /*
     * Move both servos independently
     */
#if !defined(PRINT_FOR_SERIAL_PLOTTER)
    Serial.println(F("Move independently to -90/0 degree with 60/80 degree per second using interrupts"));
#endif
    Servo1.setEasingType(EASE_LINEAR);
    Servo1.setEaseTo(-90.0f, 60);
    Servo2.startEaseTo(0.0f, 80); // This start interrupt for all servos, we check the end with areInterruptsActive()

    // blink until both servos stop
    while (ServoEasing::areInterruptsActive()) {
        // Here you can insert your own code
        blinkLED();
    }

    delay(DELAY_BETWEEN_ACTIONS_MILLIS);
}

Is that the full error message ?
Have you got verbose reporting for compilation and uploading turned on ?

Compiled for me on Nano Every. You did select the correct board, right? I tested with both options for register emulation and it was ok, with some warnings.

Here's your code formatted a little easier to read for other helpers:

#include "ServoEasing.hpp"
ServoEasing servoTop;
ServoEasing servoBottom;

const int action_pin = 2;
int location = 31;

int bottom_closed = 107;
int top_closed = 167;
int bottom_open = 20;
int top_open = 20;

void setup() {
  pinMode(action_pin, INPUT_PULLUP);
  servoTop.attach(9);
  servoBottom.attach(10);
  setSpeedForAllServos(190);
  servoTop.setEasingType(EASE_CUBIC_IN_OUT);
  servoBottom.setEasingType(EASE_CUBIC_IN_OUT);
  synchronizeAllServosStartAndWaitForAllServosToStop();
}

void loop() {
  int proximity = digitalRead(action_pin);
  if (proximity == LOW) {
    if (location > bottom_open) {
      servoTop.setEaseTo(top_open);
      servoBottom.setEaseTo(bottom_open);
      synchronizeAllServosStartAndWaitForAllServosToStop();
      location = bottom_open;
      delay(600);
    } else {
      servoTop.setEaseTo(top_closed);
      servoBottom.setEaseTo(bottom_closed);
      synchronizeAllServosStartAndWaitForAllServosToStop();
      location = bottom_closed;
      delay(600);
    }
  }
}

Here were the warnings:

In file included from c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src/Servo.h:73:0,
from c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\ServoEasing\src/ServoEasing.h:136,
from c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\ServoEasing\src/ServoEasing.hpp:50,
from C:\Users\Hallowed31\Documents\Arduino\sketchbook\assIR\assIR.ino:1:
c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src/megaavr/ServoTimers.h:38:24: warning: '_timer' defined but not used [-Wunused-variable]
static volatile TCB_t* _timer =
^~~~~~
c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src\megaavr\Servo.cpp: In function 'void initISR(timer16_Sequence_t)':
c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src\megaavr\Servo.cpp:83:40: warning: unused parameter 'timer' [-Wunused-parameter]
static void initISR(timer16_Sequence_t timer)
^~~~~
c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src\megaavr\Servo.cpp: In function 'void finISR(timer16_Sequence_t)':
c:\Users\Hallowed31\Documents\Arduino\sketchbook\libraries\Servo\src\megaavr\Servo.cpp:97:39: warning: unused parameter 'timer' [-Wunused-parameter]
static void finISR(timer16_Sequence_t timer)
^~~~~
Sketch uses 7784 bytes (15%) of program storage space. Maximum is 49152 bytes.
Global variables use 170 bytes (2%) of dynamic memory, leaving 5974 bytes for local variables. Maximum is 6144 bytes.

Also, what is this? A momentary pushbutton? There's no debouncing used, if so.

From the cryptic detail of the error posted

failed uploading: upload error: exit status 1

The problem would seem to be with uploading rather than compiling

Fair. Just uploaded to a Nano Every ok except for this warning:

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

If I have seen this warning before I don't remember and don't think I recall trouble with it.

EDIT to ^ : just reuploaded known working code of mine and it gave that warning. Hasn't caused me trouble so OP issue likely lies elsewhere.

Maybe OP forgot to select the board COM port?

Arduino IDE didnt recognize my nano every at first, so I manually typed it in. Then it did compile, but i for the error message while uploading.

You have a previous topic relating to the same project in which you never mentioned an upload problem. Can you upload the Blink sketch to your board ?

Please turn on verbose reporting for compile and upload in the IDE and post the full error message

It is the full error message, but I dont know what that other part means what you Said. I am a beginner with arduino.

I also think it maybe is because my usb micro cable is power only and not data cable, so im gonna buy a new cable and try it again

Have you got verbose warnings turned on in the IDE Preferences ?

image

not yet, im gonna try that.
what does it actually help?

yeah i solved the other problem but now it doesnt upload

When verbose output is selected more details of the compile and upload are output

alright i'm gonna try that, and i also got a new data cable so i'm also gonna try that. I will post the results on here. Thanks for the help everone