Error when compiling

I am attempting to program a MoteinoUSB to control some blinds. I am having issues while compiling the code.

I have attached the project I am attempting to compile as well as the logs I get. Any help would be appreciated.

BlindsControl.ino (5.09 KB)

Logs from compiling project.txt (44.3 KB)

You need to use code tags to display your code on the forum.

Which board type do you have selected in the IDE ?

The OP's code Auto formatted in the IDE and, of course, posted here in code tags

#include <EEPROMex.h>
#include <Node.h>

#define ENCRYPT_KEY "Blindscontrol123"

// #define NODE_DEBUG
#include <Debug.h>

#include "Blinds.h"

#define LED_PIN           9
#define BUTTON_PIN        3
#define MOTOR_PINS        15, 17, 16, 18
#define MOTOR_STEPS_PER_ROTATION 4096

#define BATTERY_PIN       A0
#define BATTERY_MIN_MV    1400 * 4
#define BATTERY_MAX_MV    1800 * 4
#define BATTERY_SENSE_RATIO float(2000000 + 2700000) / 2000000.0

#define BLINDS_STATE_EEPROM_ADDRESS 0 // Where to store blinds state

Node node;
Blinds blinds(MOTOR_PINS, MOTOR_STEPS_PER_ROTATION, BLINDS_STATE_EEPROM_ADDRESS);

uint8_t lastPosition = 0;
int8_t direction = 1;
volatile bool buttonPushed = false;
byte lastButtonVal = 1;

void flashLED(void)
{
  digitalWrite(LED_PIN, HIGH);
  delay(200);
  digitalWrite(LED_PIN, LOW);
}

void buttonInterruptHandler()
{
  byte val = digitalRead(BUTTON_PIN);
  if (val == lastButtonVal)
  {
    return;
  }
  lastButtonVal = val;
  if (!val)
  {
    // Button is down
    buttonPushed = true;
  }
  else
  {
    buttonPushed = false;
  }
}

static void sendPosition(uint8_t to, bool isReply)
{
  node.sendMessage(to, CMD_OP_BLINDS_POSITION,
                   blinds.position(), 0,
                   isReply ? CMD_FLAG_REPLY : 0);
}

static void moveNextStep(uint8_t from = GATEWAY_ADDRESS, bool sendResult = true)
{
  if ((lastPosition + direction) == NUM_BLINDS_POSITIONS)
  {
    direction = -1;
  }
  else if ((lastPosition + direction) < 0)
  {
    direction = 1;
  }
  lastPosition += direction;
  blinds.movePosition(lastPosition);
  if (sendResult)
  {
    sendPosition(from, false);
  }
}

static void sendAngle(uint8_t to, bool isReply)
{
  node.sendMessage(to, CMD_OP_BLINDS_ANGLE,
                   blinds.angle(), 0,
                   isReply ? CMD_FLAG_REPLY : 0);
}

static void sendSpeed(uint8_t to)
{
  node.sendMessage(to, CMD_OP_BLINDS_SPEED,
                   blinds.speed());
}

static void sendAngles(uint8_t to)
{
#if NUM_BLINDS_POSITIONS == 3
  uint8_t* angles = blinds.angles();
  uint16_t arg1 = (uint16_t(angles[0]) << 8) | uint16_t(angles[1]);
  node.sendMessage(to, CMD_OP_BLINDS_ANGLES, arg1, angles[2]);
#else
#error Write some code
#endif
}

void handleMessage(Message& msg)
{
  switch (msg.cmd.op)
  {
    case CMD_OP_POLL:
      DEBUG("Polling...");
      node.sendInfo(msg.from);
      sendPosition(msg.from, false);
      sendAngle(msg.from, false);
      sendSpeed(msg.from);
      sendAngles(msg.from);
      // We're done sending stuff
      node.sendMessage(msg.from, CMD_OP_POLL, 0, 0, CMD_FLAG_REPLY);
      DEBUG("Done polling");
      break;
    case CMD_OP_BLINDS_POSITION:
      blinds.movePosition(msg.cmd.arg1);
      if (!msg.isBroadcast())
      {
        sendPosition(msg.from, true);
        node.sendBatteryLevel(msg.from);
      }
      break;
    case CMD_OP_BLINDS_ANGLE:
      blinds.moveAngle(msg.cmd.arg1);
      if (!msg.isBroadcast())
      {
        sendAngle(msg.from, true);
        node.sendBatteryLevel(msg.from);
      }
      break;
    case CMD_OP_BLINDS_STEP:
      moveNextStep(msg.from, !msg.isBroadcast());
      break;
    case CMD_OP_BLINDS_ANGLES:
#if NUM_BLINDS_POSITIONS == 3
      uint8_t angles[NUM_BLINDS_POSITIONS];
      angles[0] = (msg.cmd.arg1 >> 8) & 0xff;
      angles[1] = msg.cmd.arg1 & 0xff;
      angles[2] = msg.cmd.arg2;
      blinds.setAngles(angles, NUM_BLINDS_POSITIONS);
      // The angle for the current position may have changed, so go to the new one if so
      blinds.movePosition(blinds.position());
      blinds.saveState();
      DEBUG("Set blinds angles to %d, %d, %d",
            angles[0],
            angles[1],
            angles[2]);
#else
#error Write some code
#endif
      break;
    case CMD_OP_BLINDS_SPEED:
      blinds.setSpeed(msg.cmd.arg1);
      blinds.saveState();
      break;
    default:
      break;
  }
}

void setup()
{
  DEBUG_INIT(9600);
  node.setup(DEFAULT_ADDRESS,               // default address, real address may come from EEPROM
             DEFAULT_NETWORK_ID,            // network ID
             DEFAULT_NODE_SETTINGS_ADDRESS, // EEPPROM start address for storing settings
             ENCRYPT_KEY,                   // encryption key
             true,                          // has flash
             kTiltBlinds);     // device class
  node.setBatteryParams(BATTERY_PIN, BATTERY_MAX_MV, BATTERY_MIN_MV, BATTERY_SENSE_RATIO);
  node.onMessage(handleMessage);
  DEBUG("Blinds Controller Init, address=%u", node.address());
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonInterruptHandler, CHANGE);
  DEBUG("Setup complete");
  // Ping the gateway on startup to let it know we're here
  node.sendMessage(GATEWAY_ADDRESS, CMD_OP_PING);
}

void loop()
{
  if (buttonPushed)
  {
    long pushStart = millis();
    long pushEnd;
    while (buttonPushed);
    pushEnd = millis();
    if (pushEnd  - pushStart > 2000)
    {
      flashLED();
      delay(200);
      flashLED();
      delay(200);
      flashLED();
      delay(200);
      flashLED();
      node.clearSettings();
      node.reboot();
    }
    else
    {
      flashLED();
      delay(200);
      flashLED();
      blinds.resetOrigin();
    }
  }
  node.run();
}

Hi,
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".
OR
http://forum.arduino.cc/index.php/topic,148850.0.html.
Then look down to item #7 about how to post your code.
It will be formatted in a scrolling window that makes it easier to read.

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Thanks.. Tom.. :slight_smile: