0
/*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Wire.h>
#include "ds3231.h"
#include <Servo.h>
int potpin = 0; // Analog pin is used to connect the potentiometer
int val; // Variable to read the value from the analog pin
int pause = 800; // Delay in open feeders (feed amount)


Servo myservo;  // create servo object to control a servo

#define BUFF_MAX 256

// First Service
uint8_t wake_HOUR1 = 12;
uint8_t wake_MINUTE1 = 56;
uint8_t wake_SECOND1 = 0;

// Second Service
uint8_t wake_HOUR2 = 18;
uint8_t wake_MINUTE2 = 30;

// How often to update the information to the standard output (ms)
unsigned long prev = 5000, interval = 5000;


void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  myservo.write (0); // Set the position to 0

  Serial.begin (9600);
  Wire.begin ();
  DS3231_init (DS3231_INTCN);
  DS3231_clear_a1f ();
  DS3231_clear_a2f ();
  set_alarm ();
}

void loop() 
{
   char buff [BUFF_MAX];
  unsigned long now = millis ();
  struct ts t;

  // Output through time (5000ms) The time and alarm clocks ustanovlennnye
  if ((now - prev> interval) && (Serial.available () <= 0)) {
    DS3231_get (& t);

    // Display current time
    snprintf (buff, BUFF_MAX, ".% d% 02d% 02d% 02d:.% 02d:% 02d", t.year,
             t.mon, t.mday, t.hour, t.min, t.sec);
    Serial.println (buff);

    // Display a1 debug info
    DS3231_get_a1 (& buff [0], 59);
    Serial.println (buff);
    DS3231_get_a2 (& buff [0], 59);
    Serial.println (buff);

    if (DS3231_triggered_a1 ()) {
      // INT has been pulled low
      Serial.println ( "-> First Service load");

  myservo.write(10);                  // sets the servo position according to the scaled value
  delay(1000);                           // waits for the servo to get there
  myservo.write(170);                  // sets the servo position according to the scaled value
  delay(1000);                           // waits for the servo to get there


      // Clear a1 alarm flag and let INT go into hi-z
      DS3231_clear_a1f ();
    }
    if (DS3231_triggered_a2 ()) {
      // INT has been pulled low
      Serial.println ( "-> Second Service load");

  myservo.write(10);                  // sets the servo position according to the scaled value
  delay(1000);                           // waits for the servo to get there
  myservo.write(170);                  // sets the servo position according to the scaled value
  delay(1000);  
}
1
  • Indent your code with ordinary spaces, not with no-break spaces. Commented Nov 4, 2016 at 16:36

1 Answer 1

0

As Gerben notes, the stackoverflow question error: stray '\302' in program is about this issue. Basically, your file contains one or more characters not valid in the current character set. The character is either non-printing or a multi-byte unicode character.

How did the character get there? Some of the ways mentioned in the stackoverflow question are pressing ctrl-space or shift-space.

How to find the character and get rid of it? You can look at output from hex-dumping the file, which will identify all characters definitively. Or by trial and error you can delete and retype spaces in the region of the error.

2
  • I retyped my code on a new sketch and it uploaded successfully but i tried to change the times to see if my RTC code uploaded accurately instead of just successfully I tried changing the numbers on wake hours and minutes and now i have a compiling error. Commented Nov 7, 2016 at 15:10
  • The error message will have a line number that points you to (or near) the line causing an error. If the error is in one of the uint8_t wake_HOUR1 = 12; ... uint8_t wake_MINUTE2 = 30; lines, it probably is a simple typo, like an extra or missing character. Each of those lines should be of the form uint8_t somevariablename=somevalue; where somevalue should be an integer, like 0, 1, ... 7, 8, 9, 10, 11 ... 59. A value expressed as 08 or 09 instead of 8 or 9 would produce an error because 8 and 9 are not octal digits. A missing semicolon or no space after uint8_t also is an error. Commented Nov 7, 2016 at 15:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.