First thing I noticed is that you are not referencing the global $post variable. Add this at the beginning of your function:
global $post;
Without that, using a loop that uses the_post()
will not get anything.
The code for getting a field from a widget is:
$my_value = get_field('field_name', 'widget_'.$widget_id);
Getting the fields from the banner posts, because you are doing a loop, is the same as getting a field anywhere else `get_field(‘field_name’);