New IDE 1.8.6

Related to the development libraries, released by Curt Binder
User avatar
Posts: 2751
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
PostPosted: Tue Apr 24, 2018 6:32 pm
I am pleased to report that 1.8.6 on macOS compiles a Plus and Star code without any errors. I have not tested uploading the code to the controller but I can say everything compiles just fine. So the latest version you have posted as the time of this post appears to works for macOS.

Like you reported, none of the "extras" work...the Libraries Version, Wizard and Restore Pre-loaded code.
I know in my attempt for building 1.8.5, I was able to get the Libraries Version function to work. Although that's not a big deal. Just sharing.

Posts: 12
Joined: Mon Mar 27, 2017 3:46 am
PostPosted: Tue Apr 24, 2018 8:24 pm
I also can compile the arm version of the IDE and can compile code for the RA boards. I had to do some extraction from the MAC build to get the boards/firmwares/variants correct, but all appears well. I have an issue where the IDE is unable to find the features.txt file, but the error appears to be superficial and proceeds with the compile. When I attempt to compile an actual RA wizard generated sketch I end up with a bunch of library class errors. I will have to dig into those later. Below are my current state errors along with notes for the prerequisites and IDE compile process.

Library Errors:
Code: Select all
Arduino: 1.8.6 - Reef Angel Compilation (Linux), Board: "Reef Angel Plus Controller"

The following features were automatically added:
Watchdog Timer
Version Menu

The following features were detected:
/home/pi/Arduino
java.io.FileNotFoundException: /home/pi/Arduino/update/feature.txt (No such file or directory)
   at java.io.FileInputStream.open0(Native Method)
   at java.io.FileInputStream.open(FileInputStream.java:195)
   at java.io.FileInputStream.<init>(FileInputStream.java:138)
   at java.io.FileInputStream.<init>(FileInputStream.java:93)
   at java.io.FileReader.<init>(FileReader.java:58)
   at processing.app.Editor.ProcessFeature(Editor.java:2791)
   at processing.app.Editor.handleRun(Editor.java:1733)
   at processing.app.Editor.handleRun(Editor.java:1716)
   at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:345)
   at java.awt.Component.processMouseEvent(Component.java:6530)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
   at java.awt.Component.processEvent(Component.java:6298)
   at java.awt.Container.processEvent(Container.java:2238)
   at java.awt.Component.dispatchEventImpl(Component.java:4889)
   at java.awt.Container.dispatchEventImpl(Container.java:2296)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4531)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)
   at java.awt.Container.dispatchEventImpl(Container.java:2282)
   at java.awt.Window.dispatchEventImpl(Window.java:2746)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
   at java.awt.EventQueue$4.run(EventQueue.java:733)
   at java.awt.EventQueue$4.run(EventQueue.java:731)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Standard Menu
/home/pi/Arduino/RA_Plus_Base/RA_Plus_Base.ino: In function 'void loop()':
RA_Plus_Base:66:15: error: 'class ReefAngelClass' has no member named 'PWM'
     ReefAngel.PWM.SetChannel( 0,PWMSlope( 12,0,21,0,1,25,60,0 ) );
               ^
RA_Plus_Base:67:15: error: 'class ReefAngelClass' has no member named 'PWM'
     ReefAngel.PWM.SetChannel( 1,PWMSlope( 12,0,21,0,1,25,60,0 ) );
               ^
RA_Plus_Base:68:15: error: 'class ReefAngelClass' has no member named 'PWM'
     ReefAngel.PWM.SetChannel( 2,PWMSlope( 12,0,21,0,1,25,60,0 ) );
               ^
RA_Plus_Base:69:15: error: 'class ReefAngelClass' has no member named 'PWM'
     ReefAngel.PWM.SetChannel( 3,PWMSlope( 12,0,21,0,1,25,60,0 ) );
               ^
/home/pi/Arduino/RA_Plus_Base/RA_Plus_Base.ino: At global scope:
RA_Plus_Base:113:1: error: 'a' does not name a type
 a
 ^
exit status 1
'class ReefAngelClass' has no member named 'PWM'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.



Notes:

Code: Select all
//Build Guide https://github.com/arduino/Arduino/wiki/Building-Arduino
//Install Dependencies
sudo apt-get install git make gcc ant openjdk-8-jdk avrdude

//OPTIONAL - Alt Java Install - DL the JDK from Oracle then update local paths
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_171/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_171/bin/java 1
sudo update-alternatives --config javac
sudo update-alternatives --config java
//OPTIONAL - Alt Java Install

//Clone RA Arduino Repo
 git clone -b reefangel https://github.com/reefangel/Arduino.git

//Build the IDE from source
cd Arduino/build
ant dist

//Install the IDE
mkdir -p /home/$USER/.local/share/icons/hicolor/

cd linux/work
./install

-----------------------------------
Default Arduino IDE is functional at this point - Tested uploaded Blink sketch to a Mega2560 successfully
-----------------------------------

//Converting to RA Specific IDE
//Need to update boards.txt , add the Bootloader's, Add RAPlus to variants.

Download - MacOSX 1.6.8 build and extract boards.txt to hardware/arduino/avr/
Copy RA Bootloaders in hardware/arduino/avr/bootloaders/reefangel
Copy RAplus to variants/

--------------
//Download Dev Libraries
Copy Dev libraries to ~/Arduino/libraries

//Remove old Libraries from libraries/ except for SD
rm -rf Adafruit_Circuit_Playground Bridge Esplora Ethernet Firmata GSM Keyboard LiquidCrystal Mouse Robot_Control RobotIRremote Robot_Motor Servo SpacebrewYun Stepper Temboo TFT WiFi


Posts: 12
Joined: Mon Mar 27, 2017 3:46 am
PostPosted: Thu Apr 26, 2018 7:57 pm
Ok resolved the features file issue by copying it from a windows build (I found an older thread where Roberto explained the IDE customization which is pretty critical!). All is well now, compiling, and updating my test mega with RA* code. Will move over and install in place, bridge the serial to network via socat and leave the Pi enabled all the time for sudo-OTA updates :) .
User avatar
Posts: 2751
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
PostPosted: Fri Apr 27, 2018 3:42 am
nice.
maybe create a new thread describing your layout and what you did so others could possibly reproduce? it's up to you.

very cool though. :-)

Sent from my XT1585 using Tapatalk

Posts: 3
Joined: Mon Nov 05, 2018 1:25 pm
PostPosted: Sun Nov 18, 2018 11:44 am
I can confirm that the 1.8.6 release also works on Windows, once a few files missing from the Dropbox release are copied from something else. (They're also missing from the Github page.) I had to copy boards.txt and hardware\arduino\avr\variants\RAPlus\pins_arduino.h from the MacOS release. (Which can be opened with 7zip, and probably other Windows tools.)

I also had success building and installing with a normal installation of 1.8.6, using the "mega2560" board. As far as I can tell, the only thing missing is the automatic ReefAngel_Features.h generator.

I had wasted some amount of time trying to get the installer from the "downloads" page working (reefangel.CENSORED / download.html); it might be nice to eliminate that and replace it with a link to this thread.

Posts: 12393
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Sun Nov 18, 2018 11:52 am
Yes, the only sigficant difference is the automatic generation of the features file.
The downloadable installer doesn't have the star board.
I decided that the webwizard was a better option for everyone and that's why this ide was never mainstream.
webwizard
Roberto.

Posts: 3
Joined: Mon Nov 05, 2018 1:25 pm
PostPosted: Mon Nov 19, 2018 9:52 pm
Yes, I agree that the webwizard is a more mainstream option; I guess the better suggestion would be to delete the 1.x download (which doesn't work) and instead link to the webwizard, with maybe also a link to this thread or forum with a comment about how to use the Arduino IDE. :)

Incidentally, the .ino file only needs to have
Code: Select all
#include <ReefAngel_Features.h>
and
Code: Select all
#include <ReefAngel.h>
now. The other includes were necessary with older Arduino versions so that it'd include all the right libraries, but it now has automatic detection of libraries included from other libraries.

Posts: 12393
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Tue Nov 20, 2018 3:13 pm
That's good to know.
I'll try it out.
Roberto.

Posts: 12393
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Fri Nov 23, 2018 11:02 pm
conklech wrote:Yes, I agree that the webwizard is a more mainstream option; I guess the better suggestion would be to delete the 1.x download (which doesn't work) and instead link to the webwizard, with maybe also a link to this thread or forum with a comment about how to use the Arduino IDE. :)

Incidentally, the .ino file only needs to have
Code: Select all
#include <ReefAngel_Features.h>
and
Code: Select all
#include <ReefAngel.h>
now. The other includes were necessary with older Arduino versions so that it'd include all the right libraries, but it now has automatic detection of libraries included from other libraries.

That's pretty cool.
Something must have changed.
We couldn't do that in the past.
Roberto.

Posts: 3
Joined: Mon Nov 05, 2018 1:25 pm
PostPosted: Sat Nov 24, 2018 9:10 pm
Yes, it's new since 1.6.6. I can't post links; there's a discussion at questions/6504211/ on stackoverflow. I don't know quite how it works, but I suspect it's also one of the reasons it takes so long to compile RA on Arduino. I should make a post about using PlatformIO (thanks for merging!); it's got different issues than Arduino but can do recompiles pretty quick.

The other big change in Arduino relatively recently is that the bundled version of avr-gcc now has proper C++11 support, which includes some features that can be useful to reduce the amount of RAM we require for global variables. I've been going through sort of randomly refactoring bits of the codebase trying to come up with a plan to cut RAM consumption dramatically while also allowing everything to be configured in the main sketch file, without having to modify ReefAngel_Features.h or the other header files. I'll either start a new forum topic or a pull request on Github to discuss if/when I've got a workable idea. (That's neither a threat nor a promise!)

(By the way, I'm on a quest for RAM in part because I have this crazy idea to use SK6812 RGBW LEDs, aka NeoPixels, which allow individual color+brightness control of every individual LED but would require a whole bunch of RAM since I'll need hundreds of LEDs at four bytes a pop. This is for a planted freshwater tank; I suspect the RGBW LEDs are an even worse idea for reef tanks than FW.)
PreviousNext

Return to Development Libraries

Who is online

Users browsing this forum: No registered users and 2 guests

cron